1つ前の記事で説明した配列は正確には1次元配列です。

ここでは、2次元以上の配列について説明します。



2次元配列変数のイメージ

1次元配列は、1つの箱に仕切りをつけて複数のデータが入れられるようにしたものでした。

2次元配列は、1次元配列をもう一組積み重ねたイメージです。以下のイメージでは2段ですが何段でも重ねることができます。

それぞれの段は区別できるように、0, 1というように番号が付きます。



2次元配列の宣言

2次元配列の書式を以下に示します。

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

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

    Option Explicit

Sub 二次元配列宣言の例()

  Dim x(1, 4) As Integer
    
End Sub
  


値の代入

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

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

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

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

Option Explicit

Sub 二次元配列への値の代入例()

  Dim x(1, 4) As Integer
      
  x(0, 0) = 1
  x(0, 1) = 2
  x(0, 2) = 3
  x(0, 3) = 4
  x(0, 4) = 5
  x(1, 0) = 6
  x(1, 1) = 7
  x(1, 2) = 8
  x(1, 3) = 9
  x(1, 4) = 10

End Sub


値の参照

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

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

以下に、2次元配列の値を参照する例を示します。

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

Option Explicit

Sub 配列の値参照例()

  Dim x(1, 4) As Integer
        
  x(0, 0) = 1
  x(0, 1) = 2
  x(0, 2) = 3
  x(0, 3) = 4
  x(0, 4) = 5
  x(1, 0) = 6
  x(1, 1) = 7
  x(1, 2) = 8
  x(1, 3) = 9
  x(1, 4) = 10

  MsgBox(x(1,3))

End Sub


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

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

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

  Option Explicit

Sub 繰り返し処理での参照例()
    Dim x(1, 4) As Integer
    
    x(0, 0) = 1
    x(0, 1) = 2
    x(0, 2) = 3
    x(0, 3) = 4
    x(0, 4) = 5
    x(1, 0) = 6
    x(1, 1) = 7
    x(1, 2) = 8
    x(1, 3) = 9
    x(1, 4) = 10
    
    Dim i As Integer
    Dim j As Integer
    
    For i = 0 To 1
        For j = 0 To 4
            Debug.Print x(i, j)
        Next
    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