アクセス上位ページ
 
最近の更新内容
(3)-e.組み込み定数 ⇐ [PREV]
[NEXT] ⇒ (3)-g.オブジェクト変数と Set

Excel VBA ≫ 1.基礎編 - 変数と定数(3)-f.配列の宣言

【ページ内リンク】

配列の宣言

配列とは同じデータ型の入れ物が1つ以上まとまった大きな箱のようなものです。
配列内の1つ1つのデータ領域を要素といい、各々の要素には添字(インデックス)を指定することでアクセスが可能です。 配列は繰り返し処理と組み合わせることでその真価を発揮します。



配列の宣言するには変数名の後ろにカッコと添字の下限値・上限値を指定します。 あくまで指定するのは添字であって、要素数でないことに注意してください。 データ型の指定やスコープについては変数を宣言する場合と同じです。
Dim [変数名] ([添字の下限値] To [添字の上限値]) as [データ型] 
※要素数は(添字の上限値 - 添字の下限値 + 1)となります。

添字の下限値は省略することが可能で、 省略した場合の下限値はモジュールオプション Option Base により決まります。
Dim [変数名] ([添字の上限値]) as [データ型] 
  • "Option Base"ステートメントが指定されていない場合
  • Dim Points(10) As Integer    '添字は0〜10まで
    
  • "Option Base 1"が指定されている場合
  • ※Optionは標準モジュールの最上部に記述してください。
    Option Base 1
    
    Dim Points(10) As Integer    '添字は1〜10まで
    


2次元配列の宣言

2次元以上の配列を宣言する場合は、次元毎にカンマで区切ります。添字下限値は指定しても、省略してもどちらでも構いません。
Dim [変数名] ([添字の上限値], [添字の上限値], …) as [データ型] 
  • 生徒40人分の国語・英語・数学の点数を格納するための配列を宣言して使用する例
  • Dim Points(1 To 40, 1 To 3) as Integer
    
    Points(1, 1) = 55      '出席番号1番の国語の点数を格納
    Points(1, 2) = 60      '出席番号1番の英語の点数を格納
    Points(1, 3) = 80      '出席番号1番の数学の点数を格納
    Points(2, 1) = 75      '出席番号2番の国語の点数を格納
    Points(2, 2) = 80      '出席番号2番の英語の点数を格納
    Points(2, 3) = 60      '出席番号2番の数学の点数を格納
    
  • 配列の添字上限・下限を調べる方法
  • 配列の添字下限値・上限値はそれぞれLBoundUBound関数を使用することでわかります。
    Dim test(3 To 12, 6 To 8) As Integer
    
    Debug.Print LBound(test, 1)     '1次元目の添字下限値3が表示されます。
    Debug.Print UBound(test, 1)     '1次元目の添字上限値12が表示されます。
    Debug.Print LBound(test, 2)     '2次元目の添字下限値6が表示されます。
    Debug.Print UBound(test, 2)     '2次元目の添字上限値8が表示されます。
    


上記のように、配列の宣言時に要素数が決まっているものを固定長配列といいます。 固定長配列は後述するReDimステートメントによって次元数や要素数などを変更することはできません。

動的配列の宣言

配列を宣言するとき、次元数や要素数が決まっていない場合もあると思います。 このような場合は動的配列を宣言し、処理中にその要素数などを再設定します。

動的配列の宣言は変数名の後ろにカッコのみを指定します。
Dim [変数名] () as [データ型] 

処理中に配列の次元数や要素数を変更したい場合はReDimステートメントを使用します。 次元数や要素数の指定の仕方は固定長配列の宣言と同じです。
ReDim [変数名] ([添字の下限値] To [添字の上限値], …) as [データ型] 
ReDimステートメントを使用して配列の要素数などを変更した場合、もとのデータはすべて消えてしまいます。
データ型の変更ができるのは動的配列宣言時にバリアント型で宣言した場合だけです。バリアント型以外で動的配列を宣言した場合はデータ型の変更はできませんので、配列を変更するときにデータ型の指定は不要です。

データを保持したまま配列の要素数を変更したい場合はReDim Preserveステートメントを使用します。
ReDim Preserve [変数名] ([添字の上限値])
最後の次元の添字上限値のみ変更できます。データ型、次元数、添字下限値の変更はできません。
カテゴリ内ページ



Page
Top