配列を使用すると、1つの変数で複数の値を持つことができるようになります。

ここでは、以下について説明します。



配列変数のイメージ

通常の変数は、1つの変数に1つの値を保存することができます。

配列変数は、大きな箱があってその中に「しきり」があるイメージです。

「しきり」をつけることで、複数の値(それぞれを要素と呼びます)を持つことができるようになり、それぞれ0番から始まる番号が付きます。



配列の宣言

配列も変数と同様に宣言をして使用します。

書式を以下に示します。

Dim 配列変数名(要素数 - 1) As データ型

以下は、Integer型で5個の要素(データ)を持つことができる配列の宣言例です。

5個の要素をもたせたい場合は()の中は「5-1」をして「4」とします。

    Option Explicit

Sub 配列宣言の例()

  Dim x(5) As Integer
    
End Sub
  


値の代入

配列変数に値を代入するには、以下の書式を使用します。

要素番号は0から数えるので、3番目の箱にデータを代入したい場合は、要素番号は2となります。

配列変数名(要素番号) = 値

以下に、配列変数に値を代入する例を示します。

Option Explicit

Sub 配列への値の代入例()

  Dim x(4) As Integer
  
  x(0) = 3
  x(1) = 5
  x(2) = 1
  x(3) = 7
  x(4) = 2

End Sub


値の参照

配列変数に入っている値を参照するには、以下の書式を使用します。

配列変数名(参照したい値が入っている要素番号)

以下に、配列変数の値を参照する例を示します。

ここででは、要素番号が3の値をMsgBoxを使用して表示しています。

Option Explicit

Sub 配列の値参照例()

  Dim x(4) As Integer

  x(0) = 3
  x(1) = 5
  x(2) = 1
  x(3) = 7
  x(4) = 2

  MsgBox(x(3)

End Sub


繰り返し処理を使用した値の参照

配列変数はと繰り返し処理は相性がよいので、よく使用されます。

以下は、For〜Next文を使用して値を参照する例です。

LBound関数は配列変数の要素番号の最小値を取得し、UBound関数は配列変数の要素番号の最大値を取得します。

  Option Explicit

Sub 繰り返し処理での参照例()

  Dim x(4) As Integer
  Dim i As Integer
  
  x(0) = 3
  x(1) = 5
  x(2) = 1
  x(3) = 7
  x(4) = 2
  
  For i = LBound(x) To UBound(x)
      Debug.Print x(i)
  Next

End Sub



もう1つ、For Each文を使用した例を示します。

この例は先ほどのFor Next文をFor Each文に書き換えたものです。

  Option Explicit

Sub 繰り返し処理での参照例2()

  Dim x(4) As Integer
  Dim data As Variant

  x(0) = 3
  x(1) = 5
  x(2) = 1
  x(3) = 7
  x(4) = 2

  For Each data In x
      Debug.Print data
  Next

End Sub