配列の要素(添え字)をデフォルトの0スタートではなく、1スタートでしたい場合があります。
■例
・プログラミング初心者で0スタートの概念が難しい。
・セルの位置と合わせたいので1スタートが望ましい。
・プログラミング初心者で0スタートの概念が難しい。
・セルの位置と合わせたいので1スタートが望ましい。
Option Base 1を指定しておくことで、配列が1からスタートします。
構文
Option Base{ 0 / 1 }
0 で指定した場合→配列が0からスタートします。※デフォルト設定
1 で指定した場合→配列が1からスタートします。
1 で指定した場合→配列が1からスタートします。
0 か 1 のみ指定可能です。Option Base 2 みたいなことはできません。
Option Base 1 サンプルコード
Option Base 1 Public Sub sample_option_base_1() Dim arr(10) As Variant 'Option Base 1が設定されているので、1~10の要素を使用可能です 'Option Base 1が設定されていなければ0~10の要素が使用可能です。 End Sub
’■Option Base 1が指定されていない場合でも、1からスタートも可能です。 Public Sub sample_option_base_0() 'Option Base 1が設定されていませんが、1~10で指定している為、1開始です。 Dim arr(1 To 10) As Variant '下記のようにしすると0~10となります Dim arr2(10) As Variant End Sub
注意点
Option Base 0 もしくはOption Base 1 はどちらの設定のがよいのでしょうか。
好き好きだとは思いますが、私は作成したいマクロによってどちらも使用します。
下記のような形で使い分けないといけないので、配列に慣れれば0、1どちらも使うようになると考えます。
マクロ初心者はOption Base 1で配列に慣れればよいと思います。
Option Base 1 を設定していても、影響受けない(0スタートになってしまう)ケースや
※コンボボックスのListの取得や、文字列を分割して配列に値を格納する【Split関数】が該当。逆にOption Base 1でしか動かない関数もあります。
「二次元配列を動的に行数(一次元目)を増やす」をパーツ化する【ExcelVBA】
二次元配列の行列(縦横)を入れ替える【ExcelVBA】
※コンボボックスのListの取得や、文字列を分割して配列に値を格納する【Split関数】が該当。逆にOption Base 1でしか動かない関数もあります。
「二次元配列を動的に行数(一次元目)を増やす」をパーツ化する【ExcelVBA】
二次元配列の行列(縦横)を入れ替える【ExcelVBA】
コメント