ループの境界とステップの句が同じ型に変換されないため、'<variablename>' の型を推論できません

更新 : 2007 年 11 月

For...Next ループを記述しましたが、次の条件が満たされているため、コンパイラはそのループの中でループ制御変数のデータ型を推論できません。

  • ループ コントロール変数のデータ型が As 句で指定されていません。

  • ループ境界とステップ変数に少なくとも 2 つのデータ型が含まれています。

  • 標準的なデータ型変換が存在しません。

したがって、コンパイラはループ コントロール変数のデータ型を推論できません。

以下の例では、ステップ変数が文字、両方のループ境界が整数になっています。文字と整数の間には標準的な変換がないので、このエラーが生成されます。

Dim stepVar = "1"c
Dim m = 0
Dim n = 20

' Not valid.
' For i = 1 To 10 Step stepVar
    ' Loop processing
' Next

エラー ID: BC30982

このエラーを解決するには

  • 必要に応じてループ境界とステップ変数の型を変更し、少なくともいずれか 1 つの型が、他の型から見て拡大変換に相当する型になるようにします。上の例では、stepVar の型を Integer に変換します。

    Dim stepVar = 1
    

    または

    Dim stepVar As Integer = 1
    
  • 明示的な変換関数を使用して、ループ境界とステップ変数を適切な型に変換します。上の例では、Val 関数を stepVar に適用します。

    For i = 1 To 10 Step Val(stepVar)
        ' Loop processing
    Next
    

参照

概念

暗黙の型変換と明示的な型変換

ローカル型の推論

拡大変換と縮小変換

参照

For...Next ステートメント (Visual Basic)

Option Infer ステートメント

データ型変換関数

Val 関数