次の方法で共有


オブジェクト変数またはブロック変数が設定されていない

無効なオブジェクト変数が参照されています。 このエラーは、いくつかの理由で発生する可能性があります。

  • 型を指定せずに変数が宣言されました。 変数が型を指定せずに宣言されている場合、既定では Object 型になります。

    たとえば、Dim x で宣言された変数は、Dim x As String で宣言された変数がStringObject;型になります。

    ヒント

    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 キーワードが無効になっています。

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

  1. ファイルの先頭に次のコードを追加して、 Option StrictOn に設定します。

    Option Strict On
    

    プロジェクトを実行すると、型なしで指定された変数の エラー一覧 にコンパイラ エラーが表示されます。

  2. Option Strictを有効にしない場合は、コードで型なしで指定された変数 (Dim x As StringではなくDim x) を検索し、目的の型を宣言に追加します。

  3. Nothingに設定されているオブジェクト変数を参照していないことを確認します。 コードでキーワード Nothingを検索し、参照するまでオブジェクトが Nothing に設定されないようにコードを修正します。

  4. 配列変数にアクセスする前に、配列変数が次元化されていることを確認します。 最初に配列を作成するときにディメンションを割り当てるか (Dim x() As StringではなくDim x(5) As String)、ReDimキーワードを使用して配列に最初にアクセスする前に配列の次元を設定できます。

  5. With ブロックが、With ステートメントエントリ ポイントを実行して初期化されていることを確認します。

こちらも参照ください