次の方法で共有


配列の使用

配列を宣言して、同じデータ型の値のセットを操作できます。 配列は、値を格納するための多くのコンパートメントを持つ 1 つの変数ですが、通常の変数はストレージ コンパートメントが 1 つだけで、1 つの値しか格納できません。 配列が保持するすべての値をまとめて参照することも、個別の要素を参照することもできます。

たとえば、年の各日の日単位の経費を格納するには、365 個の変数を宣言するのではなく、365 個の要素を持つ 1 つの配列変数を宣言できます。 配列内の各要素には、1 つの値が含まれています。 次のステートメントは、配列変数を 365 個の要素で宣言します。 既定では、配列のインデックスは 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 個の要素で宣言されています。

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 値の配列の要素はインデックスで識別します。 たとえば、前の例のどちらにも、次のステートメントを追加できます。

MsgBox "Data for " & varData(0) & " has been recorded." 

多次元配列の使用

Visual Basic では、最大で 60 次元の配列を宣言できます。 たとえば、次の例では 5 × 10 の 2 次元配列を宣言しています。

Dim sngMulti(1 To 5, 1 To 10) As Single 

配列を行列と考えると、最初の引数は行を表し、2 番目の引数は列を表します。

入れ子になった For..を使用します。 多次元配列を処理する次のステートメント。 次のプロシージャでは、2 次元の配列に Single 値を設定しています。

Sub FillArrayMulti() 
    Dim intI As Integer, intJ As Integer 
    Dim sngMulti(1 To 5, 1 To 10) As Single 
 
    ' Fill array with values. 
    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

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。