【VBA】2次元配列|サンプルコード多数

この記事では、Excel VBAで使用する2次元配列について、基本的な使い方から応用テクニックまで詳細に解説します。2次元配列は、データを表形式で扱う際に非常に便利です。この記事を読むことで、2次元配列の使い方がマスターできるでしょう。

目次

二次元配列の基本

二次元配列の宣言

Excel VBAで二次元配列を宣言する基本的な形式は以下です。

Dim 配列名(一次元の要素数, 二次元の要素数) As 型名

例1:整数型の二次元配列を宣言

Sub DeclareArray()
    Dim myArray(3, 4) As Integer
End Sub

このサンプルコードでは、myArrayという名前の二次元配列を宣言しています。この配列は、4行3列の整数を格納できます。

動的配列としての二次元配列

動的配列を二次元配列に変換する場合、ReDimキーワードを使用します。

ReDim 配列名(一次元の要素数, 二次元の要素数)

例2:動的配列を二次元配列に変換

Sub DeclareDynamicArray()
    Dim dynamicArray() As Integer
    ReDim dynamicArray(2, 3)
End Sub

このサンプルコードでは、dynamicArrayという動的配列を2行3列の二次元配列に変換しています。

配列の要素への代入

配列の要素に値を代入するには、以下のようにします。

配列名(インデックス1, インデックス2) = 値

例3:配列の要素に値を代入

Sub AssignValuesToArray()
    Dim myArray(2, 2) As Integer
    myArray(0, 0) = 1
    myArray(0, 1) = 2
    myArray(0, 2) = 3
    myArray(1, 0) = 4
    myArray(1, 1) = 5
    myArray(1, 2) = 6
End Sub

このサンプルコードでは、myArray配列の各要素に1から6までの整数を代入しています。

二次元配列の応用

配列に配列を代入する

動的配列には同じ型の配列だけ代入できます。

例5:二次元配列の要素を別の二次元配列にコピー

Sub AssignArrayToArray()
    Dim anotherArray(2, 3) As Integer
    Dim dynamicArray(2, 3) As Integer
    Dim i As Integer, j As Integer
    
    ' anotherArrayに何らかの値を設定(例として0から5までの値を設定)
    For i = 0 To 2
        For j = 0 To 3
            anotherArray(i, j) = i * 2 + j
        Next j
    Next i
    
    ' anotherArrayの要素をdynamicArrayにコピー
    For i = LBound(anotherArray, 1) To UBound(anotherArray, 1)
        For j = LBound(anotherArray, 2) To UBound(anotherArray, 2)
            dynamicArray(i, j) = anotherArray(i, j)
        Next j
    Next i
End Sub

このサンプルコードでは、anotherArrayという2行3列の二次元配列と、dynamicArrayという同じサイズの二次元配列を作成しています。その後、anotherArrayの各要素をdynamicArrayにコピーしています。

二次元配列の操作

要素の取得

配列の要素を取得するには、以下のようにします。

例6:配列の要素を取得

Sub GetArrayValue()
    Dim myArray(2, 2) As Integer
    Dim value As Integer
    myArray(0, 0) = 1
    value = myArray(0, 0)
End Sub

このサンプルコードでは、myArray配列の(0, 0)の位置にある要素を取得して、value変数に格納しています。

インデックスの範囲

インデックスが配列の範囲外の場合、エラーが発生します。

例7:範囲外のインデックスを指定

Sub OutOfRangeIndex()
    Dim myArray(2, 2) As Integer
    Dim outOfRangeValue As Integer
    outOfRangeValue = myArray(10, 10)  ' エラーが発生する
End Sub

このサンプルコードでは、存在しないインデックス(10, 10)を指定しているため、エラーが発生します。

2次元配列に関するFAQ

Q:2次元配列とは何ですか?

A:2次元配列は、データを格子状に格納するためのデータ構造です。通常の配列が1次元の線上にデータを格納するのに対し、2次元配列は行と列の2次元平面上にデータを格納します。Excelのシートのように、行と列でデータを管理する場合に便利です。

Q:2次元配列の宣言方法は?

A:VBAでの2次元配列の宣言は、Dimキーワードを使用して行います。例えば、Dim myArray(3, 4) As Integerというコードは、3行4列の整数型の2次元配列を宣言します。

Q:動的な2次元配列は作成できますか?

A:はい、ReDimキーワードを使用することで、動的な2次元配列を作成できます。初めにDim dynamicArray() As Integerと宣言し、後でReDim dynamicArray(2, 3)とすることで、2行3列の動的な2次元配列が作成されます。

Q:2次元配列の要素にどうやって値を代入しますか?

A:2次元配列の要素に値を代入するには、配列名(行インデックス, 列インデックス) = 値という形式を使用します。例えば、myArray(0, 0) = 1とすると、myArray配列の1行1列目に1が代入されます。

Q:2次元配列の要素をどうやって取得しますか?

A:2次元配列の要素を取得するには、変数名 = 配列名(行インデックス, 列インデックス)という形式を使用します。例えば、value = myArray(0, 0)とすると、value変数にmyArray配列の1行1列目の値が格納されます。

Q:2次元配列でよく発生するエラーは何ですか?

A:2次元配列でよく発生するエラーは、インデックスが配列の範囲外になることです。VBAでは、配列のインデックスは通常0から始まります。したがって、myArray(10, 10)のように宣言されていないインデックスを指定すると、エラーが発生します。

Q:2次元配列をソートする方法は?

A:VBA標準の機能では2次元配列のソートは直接サポートされていません。しかし、独自のソートアルゴリズムを実装することで、2次元配列をソートすることは可能です。

関連動画

まとめ

この記事では、Excel VBAでの2次元配列の基本から応用までを詳しく解説しました。特に、配列の宣言、動的配列への変換、要素の取得や代入などについて詳しく説明しました。この知識を基に、より高度なプログラミングに挑戦してみてください。

Excelのショートカットキーの練習

当サイトはショートカットキーの練習を実際の動きを確認しながら練習できる機能がついています。繰り返し指を動かして練習ができるので、ゲーム感覚で遊んでいくうちに自然とショートカットキーが使えるようになれます。ショートカットキーは暗記するよりも実際に手を動かして練習していったほうが習得が早くなるので、是非当サイトをブックマークに登録し定期的に練習してみてください。下記のSTARTキーを押下すると練習を始められます。

下のスタートボタンを押して練習モードに入ります。
STARTSTOP
※入力モード切り替え ctrl + shift + alt + space
PRE
NEXT
現在の問題をリストから除外
除外したリストをリセット
現在の除外状況のURL取得
コピー
ガイドモード
リピートモード

※推奨ブラウザ Google Chrome

PUSH ENTER
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次