Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Code enthält eine For...Next -Schleife, in der der Compiler aufgrund der folgenden Bedingungen keinen Datentyp für die Schleifensteuerungsvariable ableiten kann:
Der Datentyp der Schleifensteuerungsvariablen wird nicht mit einer
As-Klausel angegeben.Die Schleifenbegrenzungen und die step-Variable enthalten mindestens zwei Datentypen.
Zwischen den Datentypen sind mehrere Konvertierungen möglich.
Es gibt keinen optimalen Typ unter den Kandidaten, sodass die Auswahl des Typs für die Schleifensteuerungsvariable mehrdeutig ist.
Die folgende Schleife weist beispielsweise eine Schleifenbegrenzung vom Typ Integer und eine Schleifenbegrenzung vom Typ UIntegerauf:
Dim m As Integer = 1
Dim n As UInteger = 10
' Not valid.
' For i = m To n
' Loop processing.
' Next
Es wird eine mögliche Konvertierung zwischen Integer und UIntegersowie eine mögliche Konvertierung zwischen UInteger und Integerunterstützt, bei beiden handelt es sich jedoch um einschränkende Konvertierungen, sodass keine der beiden eine optimale Wahl darstellt.
Im nächsten Beispiel wird eine dritte Variable des Typs Double hinzugefügt. Sowohl Integer als auch UInteger verfügen über standardmäßige Erweiterungskonvertierungen für Double, wodurch die Konvertierung in Double die beste Wahl darstellt. Durch den Typrückschluss wird dem Datentyp i die Schleifensteuerungsvariable Doublezugewiesen.
Dim stepVar As Double = 1
' Valid.
For i = m To n Step stepVar
' Loop processing.
Next
Fehler-ID: BC30983
So beheben Sie diesen Fehler
Konvertieren Sie eine der Variablen explizit in einen Typ, für den die anderen über eine Erweiterungskonvertierung verfügen. Beispiel:
For i = m To CLng(n)Verwenden Sie eine
As-Klausel, um den Typ der Steuerelementvariablen anzugeben:For i As Double = m To n