サイトについて      連絡先   検索

VBA 二次元配列

はじめに

Excel VBA マクロで二次元配列の使い方を紹介します。

二次元配列は配列の中に配列が入っています。要素が表のようになっていると考えるとイメージしやすいです。

要素を指定するインデックスが複雑なので混乱しないように注意します。

  • 目次
    • 二次元配列とは
    • 二次元配列の操作
    • 二次元配列の全要素を参照する

二次元配列とは

今まで紹介した配列は一次元配列です。これを二次元や三次元など次元数を増やせます。

Dim 配列(要素数1, 要素数2) As 型名のようにして宣言します。, で区切って次元数を増やせます。


Dim 一次元(3) As Integer
Dim 二次元(3, 4) As Integer
Dim 三次元(3, 4, 5) As Integer

Dim 二次元2(1 To 3, 2 To 4) As Integer ' To も使えます。

一次元配列の考え方


Dim 静的(3) As Integer

この配列は要素が横一列に並んでいると考えるとイメージしやすいと思います。

1

二次元配列の考え方


Dim 静的(3, 2) As Integer

二次元配列は一次元目の配列の要素に二次元目の配列が入っています。簡単にいうと表になっています。

2

三次元配列は、二次元目の配列の要素に三次元目の配列が入っています。表が何枚もあるイメージです。

このように次元数が増えると配列の中に配列が入れ子状になって増えていきます。

二次元配列の操作

二次元配列の値を取得または設定する方法は一次元配列と同じです。


Dim 二次元(3, 4) As Integer
二次元(0, 1) = 1
二次元(1, 1) = 11
二次元(2, 1) = 21

Dim i As Integer
i = 二次元(0, 1)
Debug.Print (i) ' 1
i = 二次元(1, 1)
Debug.Print (i) ' 11

二次元配列の全要素を参照する

LBound 関数」と「UBound 関数」は取得する次元数を指定できます。


Dim 二次元(1 To 3, 2 To 4) As Integer

' 一次元目の要素数を取得
Dim min1 As Integer
Dim max1 As Integer
min1 = LBound(二次元, 1) ' 1
max1 = UBound(二次元, 1) ' 3

' 二次元目の要素数を取得
Dim min2 As Integer
Dim max2 As Integer
min2 = LBound(二次元, 2) ' 2
max2 = UBound(二次元, 2) ' 4

' 全要素をループする
Dim i As Integer
Dim j As Integer
For i = min1 To max1
    For j = min2 To max2
        二次元(i, j) = 10
    Next
Next
  • 目次
    • 二次元配列とは
    • 二次元配列の操作
    • 二次元配列の全要素を参照する