Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【Visual Basic】エラーメッセージ「オブジェクト参照がオブジェクト インスタンスに設定されていません。」

理由はいろいろ考えられるが、ありがちな原因として、要素数を指定しない配列に値を代入すると、このメッセージが出る。

下記の例では表題のエラーメッセージが出るが、ReDimコマンドで要素数を指定し忘れているのが原因である。

Dim d() As Double ' ここはコメント、例えばここで「ReDim d(3)」などと書けば動作する d(0) = 1.0

自作のクラスでも同様である。以下は実行時に表題のとおりのエラーメッセージが表示される(コンパイルはできる)。

Public Class SubClass
    Public n As integer
End Class

Public Class MainClass
    Dim i As Integer
    Dim c() As SubClass
    ReDim c(9)
    For i = 0 To 9
        'c(i) = New SubClass
        c(i).n = i
    Next i
End Class

上記プログラム中でコメントになっている青字の行のコメントを外せば、動作する。