配列 配列の使い方
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
'配列を宣言すると、同じデータ型の 1 組の値を処理できます。通常の変数は、1 つの値を 1 つの区画に格納していますが、配列は、値を格納するために多くの区画を持つ 1 つの変数です。配列が格納しているすべての値を参照する場合は、配列全体を参照できます。また、配列の個々の要素を参照することもできます。 ' 'たとえば、一年間の毎日の支出を記録する場合、365 個の変数を宣言する代わりに、365 の要素を持つ 1 つの配列変数を宣言することができます。配列の各要素には、1 つの値を持ちます。次のステートメントは、365 個の要素を持つ配列変数 curExpense を宣言します。特に指定しない限り、配列には 0 から始まるインデックス番号が付けられます。したがって、配列に指定するインデックスの最大値は、365 ではなく 364 となります。 Dim curExpense(364) As Currency '各要素の値を設定するには、要素のインデックス番号を指定します。次の例は、配列の各要素に初期値 20 を代入します。 Sub FillArray() Dim curExpense(364) As Currency Dim intI As Integer For intI = 0 To 364 curExpense(intI) = 20 Next End Sub 'インデックス番号の最小値の変更 ' 'モジュールの先頭で Option Base ステートメントを使用すると、最初の要素の既定値を 0 から 1 に変更することができます。次の例では、Option Base ステートメントを使って、配列のインデックス番号の最小値を変更します。この Dim ステートメントは、365 の要素を持つ配列変数 curExpense を宣言します。 Option Base 1 Dim curExpense(365) As Currency '次の例のように To 節を使って配列のインデックス番号の最小値を明示的に設定することもできます。 Dim curExpense(1 To 365) As Currency Dim strWeekday(7 To 13) As String 'バリアント型 (Variant) の値の配列への格納 ' 'バリアント型 (Variant) の値の配列を作成するには、次に示す 2 つの方法があります。1 つ目の方法は、次の例のようにバリアント型 (Variant) の配列を宣言する方法です。 Dim varData(3) As Variant varData(0) = "Claudia Bendel" varData(1) = "4242 Maple Blvd" varData(2) = 38 varData(3) = Format("06-09-1952", "General Date") 'もう 1 つの方法は、次の例のように Array 関数で返される配列をバリアント型 (Variant) 変数に代入する方法です。 Dim varData As Variant varData = Array("Ron Bendel", "4242 Maple Blvd", 38, _ Format("06-09-1952", "General Date")) 'どちらの方法で配列を作成しても、バリアント型 (Variant) の値の配列の要素を識別します。たとえば、次のステートメントは、前の 2 つの例のどちらにも追加できます。 MsgBox varData(0) & " に関するデータを記録しました。" '多次元配列の使い方 ' 'Visual Basic では、最大 60 次元までの配列を宣言することができます。たとえば次のステートメントは、2 次元の 5 x 10 の配列を宣言します。 Dim sngMulti(1 To 5, 1 To 10) As Single '配列を行列とすると、最初の引数は行、2 番目の引数は列を表します。 ' '多次元の配列を処理するには、ネストさせた For...Next ステートメントを使います。次のプロシージャでは、単精度浮動小数点数型 (Single) の値を持つ 2 次元の配列を指定します。 Sub FillArrayMulti() Dim intI As Integer, intJ As Integer Dim sngMulti(1 To 5, 1 To 10) As Single ' 配列に値を格納します。 For intI = 1 To 5 For intJ = 1 To 10 sngMulti(intI, intJ) = intI * intJ Debug.Print sngMulti(intI, intJ) Next intJ Next intI End Sub |