配列の添字の最小値を「1」に設定する
2015/03/30
Option Base ステートメントを使用する
Option Base 1
添字の既定の最小値は 0 です。Option Base ステートメントを使うと既定の最小値を 1 に設定できます。
Option Base ステートメントを使用する場合は、モジュール内のどのプロシージャよりも前に記述する必要があります。Option Base ステートメントは、モジュール内で一度だけ、次元を含む配列の宣言よりも前に記述します。
Option Base ステートメントの設定が有効になるのは、ステートメントが記述されているモジュール内の配列の添字の最小値のみです。
Option Base ステートメントを設定する
モジュールの宣言セクションに Option Base 1 を指定するとモジュール内の配列の添字の最小値が「1」に設定されます。
VBAソース
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub sample_option_base01() '整数型の要素3の配列 Dim strArray(3) As Integer '配列 strArray の添字の最小値・最大値を表示 MsgBox "添字開始番号:" & LBound(strArray) & Chr(13) & _ "添字終了番号:" & UBound(strArray) End Sub |
実行結果
Option Base 1 ステートメントを設定しているため添字の最小値が「1」となります。
( ※ UBound 関数・LBound 関数 は、それぞれ配列の添字の最大値・最小値を取得します。)
Option Base ステートメントに影響されない関数など
Option Base ステートメントを使用しても Split 関数や キーワード ParamArray を使って作成する配列の添字の最小値は 0 のままです。
つまり、Split 関数 や キーワード ParamArray は、Option Base ステートメントの影響を受けません。
例 Split関数(※ Array 関数 と比較)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Sub sample_option_base02() Dim val, val2, mystr val1 = Array(1, 2, 3, 4, 5) mystr = "10,20,30,40,50" val2 = Split(mystr, ",") 'val1(1) と val2(1) の値を比較 MsgBox "val1(Array関数で取得):" & val1(1) & Chr(13) & _ "val2(Split関数で取得):" & val2(1) End Sub |
実行結果
Array 関数は、Open Base ステートメントの影響を受けるため、val1(1)は、「1」を表示します。一方、Split 関数は、Open Base ステートメントの影響を受けないため、val2(1)は、「20」を表示します。
例 キーワード ParamArray
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
'引数の配列の添字が「1」の値を返す Function get_First_el(ParamArray myArray()) As Long get_First_el = myArray(1) End Function Sub sample_option_base03() MsgBox get_First_el(11, 12, 13, 14, 15, 16, 17) End Sub |
実行結果
Option Base 1 ステートメントの影響を受けていないので、「12」が表示されます。
関連記事
-
-
変数がオブジェクト型かどうかをチェックする( IsObject 関数 )
IsObject 関数の使い方 【書式】 result = IsObject ( …
-
-
連想配列(Dictionary オブジェクト)
連想配列 連想配列とは、添字(キー)に文字列を使用することができる配列です。 V …
-
-
オートシェイプの種類を表す定数(MsoAutoShapeType 列挙型)
MsoAutoShapeType 列挙型 オートシェイプオブジェクトの図形の種類 …
-
-
画面の更新を停止(ScreenUpdating プロパティ)
画面の更新を停止 マクロを実行すると、画面が更新されます。これにより、実行速度が …
-
-
文字列:文字列の長さを取得( Len 関数、LenB 関数 )
Len 関数(文字列の長さを取得) 【書式】 result_len = Len …
-
-
文字列:文字列の空白を削除(Trim 関数, LTrim関数, RTrim関数)
Trim 関数・LTrim 関数・RTrim 関数の使い方 【書式】 <先頭と末 …
-
-
書式を変換(Format 関数)
Format 関数の使い方 【書式】 result = Format ( exp …
-
-
指定したセル範囲のサイズを変更(Resize プロパティ)
Resize プロパティ 指定したセル範囲のサイズ(行数や列数)を変更します。 …
-
-
オブジェクトの書式をクリアする(ClearFormats メソッド)
ClearFormats メソッド 対象となるオブジェクトの書式(スタイル)を初 …
-
-
カレントフォルダ(CurDir 関数、ChDir ステートメント、ChDrive ステートメント)
カレントフォルダ カレントフォルダとは、ブックを開いたり保存するときに既定で参照 …