VBAでテーブルを直接操作してもいいですが、テーブルを配列に保存し(取り込み)、配列でデータを扱うほうが速い場合があります。
この記事では、テーブルのデータ部分を簡単に配列に保存する方法についてご紹介します。
目次
テーブルを配列に保存する
テーブルのデータ部分を配列に保存する方法はとても簡単です。
配列名()=Range("テーブル名")
このように配列名 = テーブル名 だけで配列に読み込むことができます。
具体例として、次のコードを実行してみます。
Sub テーブル配列保存()
Dim MyArray() As Variant
Dim x As Long
Dim y As Long
MyArray = Range("TBL職員")
For y = 1 To UBound(MyArray, 1)
For x = 1 To UBound(MyArray, 2)
MsgBox MyArray(y, x)
Next
Next
End Sub

Dim MyArray() as Variant と配列を宣言しておけば、配列名の後の”()”かっこはあっても、なくてもどちらでも大丈夫です。
配列だとわかるようにするなら、”()”かっこがあったほうがいいと思います。
- MyArray()
- MyArray
■テーブルデータ


■実行結果




解説
①MyArrayの配列に、TBL職員のテーブルデータを保存します。
➁保存した配列のデータをFor文でメッセージボックスに順に表示します。
「山田 太郎」→「1950/1/1」→「男」・・・→「製造部」の順に表示されます。
セル範囲指定で配列に保存すると配列が1からになる
配列の開始は0からの場合と1からの場合があります。言語によって異なりますが、ほとんどの言語が0から始まります。
Excelの場合も普通に配列を宣言すると、例えばMyArray(2)の場合、
- MyArray(0)
- MyArray(1)
- MyArray(2)
の3つができ、0が起点となります。
しかしは、テーブルなどのセル範囲から配列に保存して作成した配列は、1から始まります。
先ほどご紹介した事例のコードだと、MyArray(1,1)~MyArray(3,4)の配列で保存されています。
テーブルを配列に保存した場合は、1が起点となりますのでご注意ください。
まとめ
テーブルを配列に保存するには、以下のコードで簡単に保存できます。
配列名()=Range("テーブル名")
また以下の点を必ず押さえておきましょう。
- データ部分のみが、配列に保存される。
- テーブルを配列に保存した場合、配列は”1”が起点になる。
コメント