[VBA]インデックス番号の範囲を指定して配列を宣言する

超まとめ

VBAの配列は、インデックス番号の範囲を指定して宣言できます。

'書式
'配列名( <開始インデックス値> TO <終了インデックス数>)

Sub test()
  'インデックスが1~10のmyArrayを作成する
  Dim arrayA()
  ReDim arrayA(1 to 10)
End Sub     'ここにブレークポイントを張って実行

実行結果

よくある書き方について

よくある書き方は ReDim arrayX(10) というように”to”を書かない形式ですが、この書き方では開始インデックス値が0になります。

Sub test()
  'ReDim arrayX(10)だとインデックスは0~10になる
  Dim arrayX()
  ReDim arrayX(10)
End Sub     'ここにブレークポイントを張って実行


この書式は「Redim arrayX( 0 to 10)」の”0 to “を省略した形であると理解するのが良いようです。

Excel VBAでのベストプラクティス?

Excelのセルの処理を考えると配列の開始インデックス値が0なのはいろいろ面倒なので、Excelの場合は何も考えずに

Option Base 1

を設定して、開始インデックス値のデフォルトを1に変更しておくのが良いかもしれません。

コメントを残す