配列操作

配列開始を1からスタートさせる【Option Base 1】【ExcelVBA】

配列の要素(添え字)をデフォルトの0スタートではなく、1スタートでしたい場合があります。

■例
・プログラミング初心者で0スタートの概念が難しい。
・セルの位置と合わせたいので1スタートが望ましい。

Option Base 1を指定しておくことで、配列が1からスタートします。

構文

Option Base{ 0 / 1 }

0 で指定した場合→配列が0からスタートします。※デフォルト設定
1 で指定した場合→配列が1からスタートします。
01 のみ指定可能です。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】

コメント

タイトルとURLをコピーしました