配列のインデックス番号は通常「0」から始まりますが、宣言した時点で「1」から始める方法を説明します。
配列を宣言時にインデックス番号を1からにする方法
配列を宣言したときにインデックス番号を「1」から始まるように設定する方法は2つあります。
- Dim 変数(下限値 To 上限値) As データ型 と記述する
- Option Base 1 を使う
それぞれについて説明します。
Dim 変数(下限値 To 上限値) As データ型 と記述する
配列の宣言時にインデックス番号の下限値と上限値を好きな値に指定するには
Dim 変数(下限値 To 上限値) As データ型
と記述します。
インデックス番号を「1」からにする場合は、下限値を「1」にして記述します。
Dim 変数(下限値 To 上限値) As データ型 を使ったVBAコード例
インデックス番号を「1~3」に設定し、各要素にデータを格納後、For文にてセルA1~A3にデータを出力するコード例は以下のようになります。
Sub インデックス番号を1からにする()
Dim hensu(1 To 3) As Variant 'インデックス番号を1~3に指定する。
Dim i As Long
hensu(1) = "みかん"
hensu(2) = "ぶどう"
hensu(3) = "スイカ"
For i = 1 To 3
Cells(i, 1) = hensu(i) 'セルA1~A3に値を入れる
Next i
End Sub
実行結果はこのようになります。
Option Base 1 を使う
Option Baseステートメントを使うと、配列のインデックス番号の下限値を「0」か「1」に設定することができます。
下限値を「1」にする場合は、以下のように記述します。
Option Base 1
なお、Option Baseステートメントは、モジュールの先頭にある宣言セクション(Subより上の行)に記述します。
Option Base 1 を使ったVBAコード例
Option Base 1
Sub インデックス番号を1からにする()
Dim hensu(3) As Variant 'インデックス番号を1~3に指定する。
Dim i As Long
hensu(1) = "みかん"
hensu(2) = "ぶどう"
hensu(3) = "スイカ"
For i = 1 To 3
Cells(i, 1) = hensu(i) 'セルA1~A3に値を入れる
Next i
End Sub
実行結果は以下のようになります。
【まとめ】配列を宣言時にインデックス番号を1からにする方法
配列を宣言時にインデックス番号を1からにする方法は、
- Dim 変数(下限値 To 上限値) As データ型 と記述する
- Option Base 1 を使う
の2通りがありました。
どちらの方法を使っても結果に変わりはありませんが、Option Baseは下限値を0か1にしか設定できないので注意が必要です。
Excel VBAは習うより慣れろです!どんどん使っていきましょう!!
参考:Excel VBA入門 その31:配列のインデックス番号を変更する方法
コメント