<Typ variablename> je nejednoznačný, protože hranice smyčky a proměnná kroku se nerozšírují na stejný typ.

Váš kód obsahuje smyčku For...Next , ve které kompilátor nemůže odvodit datový typ pro řídicí proměnnou smyčky, protože platí následující podmínky:

  • Datový typ řídicí proměnné smyčky není určen klauzulí As .

  • Hranice smyčky a proměnná kroku obsahují aspoň dva datové typy.

  • Mezi datovými typy existuje více možných převodů.

  • Mezi kandidáty není nejlepší typ, takže volba typu řídicí proměnné smyčky je nejednoznačný.

Například následující smyčka má jednu vazbu typu Integer a jednu smyčku UIntegertypu:

Dim m As Integer = 1  
Dim n As UInteger = 10  
' Not valid.  
' For i = m To n  
    ' Loop processing.  
' Next  

Existuje možný převod mezi a UIntegera možným převodem mezi Integer UInteger a Integer, ale oba jsou zužující převody, takže ani jeden z nich není nejlepší volbou.

V dalším příkladu se přidá třetí proměnná typu Double . Oba Integer a UInteger mají standardní rozšiřující převody na Double, což dělá převod na Double nejlepší volbu. Odvození typu přiřadí proměnné smyčky i datový typ Double.

Dim stepVar As Double = 1  
' Valid.  
For i = m To n Step stepVar  
    ' Loop processing.  
Next  

ID chyby: BC30983

Oprava této chyby

  • Explicitně převeďte jednu z proměnných na typ, na který ostatní mají rozšiřující převod, například:

    For i = m To CLng(n)  
    
  • As K určení typu řídicí proměnné použijte klauzuli:

    For i As Double = m To n
    

Viz také