コード内では変数を使うことで値に名前を付けて扱うことができます。
ですが、下のように同種の値を複数宣言するのは手間だし、管理するにあたって非効率なケースが出てきたりします。
Dim name1 As String
Dim name2 As String
Dim name3 As String
…
Dim name100 As String
例えば、同時に「100人分の名前」を使って処理を行う場合、100個のString型を宣言する必要があるかもしれなく面倒です。
また、ループ処理を行う際にはイチイチ値を確認しながら記述をするのは面倒だし、コードの行数が増えてとても見づらいモノになってしまいます。
VBAではこういった値の集合を扱う方法をいくつか用意されています。
その1つが”配列”です。
そんな配列について本記事では解説していきます。
VBAでの配列とは
上のイメージのように入れ物を”要素”、その入れ物に割り振られた数字(整数)を”インデックス”と呼びます。
加えて、配列の要素の数を”要素数”または”サイズ”といいます。
そして、この配列を使うイメージとして”複数の箱にモノを入れて管理する”といった感じです。
例えば、固定配列の最もシンプルなコードは下になります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub sample1() Dim a(2) As String a(0) = "田中" a(1) = "鈴木" a(2) = "斉藤" Debug.Print a(0) '"田中"と表示 Debug.Print a(1) '"鈴木"と表示 Debug.Print a(2) '"斉藤"と表示 End Sub |
上のコードでは2行目にインデックス最大値が”2”の配列を宣言しています。
つまり、簡単に言うと「2行目時点で”0,1,2”と書かれた3つ箱が用意された」という状況になります。
そして、3行目から5行目で3つの箱にそれぞれ値が入れる(代入)処理になります。
このように「箱を用意して、入れる」というのが配列の基本操作になります。
配列の種類
配列は下の3種類があります。
種類 | 記述の仕方 |
固定配列 | 配列名(インデックス最大値) As 型名 |
動的配列 | 配列名() As 型名 |
多次元配列 | 配列名(1次元 , 2次元) As 型名 ※二次元配列 |
・固定配列:宣言時に要素数を指定する配列。要素数を変えることはできない。この配列のイメージは”隙間なく並べられた複数の箱”である。
・動的配列:宣言時に要素数を指定しない配列。プログラム実行時に可変的に配列の要素数を変更したいときに使用。
・多次元配列:特性は固定配列と同じ。この配列のイメージは”表”である。
配列を扱う関数
下の関数は非常に使用頻度の高い関数です。
関数 | 解説 |
Array(要素1, 要素2) | 配列を生成し、Variant型で返す |
LBound(配列名) | 配列のインデックス最小値を返す |
UBound(配列名) | 配列のインデックス最大値を返す |
要素を1つずつ代入していくのは面倒です。
そういった要素が多い場合はArray関数を使い、一度に複数の値を格納します。
また、プログラム実行時に対象の配列のインデックスの最大値(最小値)を使ってループや分岐を行いたい場合は「LBound」「UBound」関数を使うと良いです。
この2つの関数の代表的な使い方は下の通りです。
1 2 3 4 5 6 |
Sub Sample2() Dim a(1 To 5) As String, i As Integer For i = LBound(a) To UBound(a) Cells(i, 1) = i Next End Sub |
2行目でインデックス(1~5)の要素数5つの配列を宣言しています。
そして、2つの関数の使い方でよくみられるのが、3行目の「インデックス最小値から最大値まで処理を繰り返す」というForループの記述です。
この2つの関数でループさせることで、配列全体の操作が可能にできるのです。
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク