無効なオブジェクト変数が参照されています。 このエラーは、いくつかの理由で発生する可能性があります。
型を指定せずに変数が宣言されました。 変数が型を指定せずに宣言されている場合、既定では
Object型になります。たとえば、
Dim xで宣言された変数は、Dim x As Stringで宣言された変数がString型Object;型になります。ヒント
Option Strictステートメントでは、暗黙的な型指定が禁止され、結果としてObject型になります。 型を省略すると、コンパイル時エラーが発生します。 Option Strict ステートメントを参照してください。Nothingに設定されているオブジェクトを参照しようとしています。正しく宣言されていない配列変数の要素にアクセスしようとしています。
たとえば、
products() As Stringとして宣言された配列は、配列products(3) = "Widget"の要素を参照しようとするとエラーをトリガーします。 配列には要素がなく、オブジェクトとして扱われます。ブロックが初期化される前に、
With...End Withブロック内のコードにアクセスしようとしています。With...End Withブロックは、Withステートメントエントリ ポイントを実行して初期化する必要があります。
注
以前のバージョンの Visual Basic または VBA では、このエラーは、Set キーワード (Set x = "name"ではなくx = "name") を使用せずに変数に値を割り当てることによってもトリガーされました。 visual Basic .Net では、 Set キーワードが無効になっています。
このエラーを解決するには
ファイルの先頭に次のコードを追加して、
Option StrictをOnに設定します。Option Strict Onプロジェクトを実行すると、型なしで指定された変数の エラー一覧 にコンパイラ エラーが表示されます。
Option Strictを有効にしない場合は、コードで型なしで指定された変数 (Dim x As StringではなくDim x) を検索し、目的の型を宣言に追加します。Nothingに設定されているオブジェクト変数を参照していないことを確認します。 コードでキーワードNothingを検索し、参照するまでオブジェクトがNothingに設定されないようにコードを修正します。配列変数にアクセスする前に、配列変数が次元化されていることを確認します。 最初に配列を作成するときにディメンションを割り当てるか (
Dim x() As StringではなくDim x(5) As String)、ReDimキーワードを使用して配列に最初にアクセスする前に配列の次元を設定できます。Withブロックが、Withステートメントエントリ ポイントを実行して初期化されていることを確認します。
こちらも参照ください
.NET