無効なインデックス番号

広告

配列を使った場合に範囲を超えたインデックス番号を使った場合にどうなるかを確認しておきます。

Dim pref(2) As String

このような配列を宣言したとします。この場合有効なインデックス番号は0から1までとなります。この時にインデックス番号として3を指定して配列の要素にアクセスしてみます。

Sub テスト()
    Dim pref(2) As String
    Dim i As Integer

    Dim src As String
    Dim msg As String

    pref(0) = "東京都"
    pref(1) = "神奈川県"
    pref(2) = "千葉県"
End Sub

上記のマクロを実行すると次のようになります。

インデックス番号のエラー

このように「実行時エラー」となります。コンパイルしただけではエラーとなりませんので注意して下さい。これはコンパイルの段階では配列のインデックスが範囲内なのかどうかをチェックしていないためです。実際に実行してみて始めてエラーとなります。

( Written by Tatsuo Ikura )