Array関数で配列を扱う

配列を作成するArray関数の使用法と配列に関しての解説

'配列を代入して選択範囲に一括出力
Dim 配列 As Variant
配列 = Array(1, "+", 2, "=", 3)
Selection = 配列

Array関数とは、配列を作成する関数です

関数の書式

引数(太字は必須引数)
(arglist)
戻り値の型 Variant

引数「arglist」にはデータを指定します、例の様に要素を「,」で区切って入力していくことで要素数を増やすことが出来ます

配列について

この配列というのは変数での使用が主になります
オブジェクト変数と同じくらい理解が難しい内容なので、この記事はある程度VBAの理解が出来てからで大丈夫です

配列というのは複数の要素からなるデータ群のことです

Array関数で作成する配列は1次元の配列になります
この次元というのは、1次元が一方向へのデータの集合体となりますので、2次元は2方向へのデータの集合体という認識になります

2次元の配列というのは、要はExcelのワークシートと同じイメージです
Excelのワークシートは縦と横にデータを入力していくことができるデータ群です
なのでArray関数で作るデータというのは、Excelのワークシートの行や列方向へのデータの作成ということになります

Array関数でセル範囲に入力する動き
配列を代入して出力する動き

この画像は配列を代入させて、それを選択範囲に一括で出力しています
コード最後の「Selection = 配列」で一括出力ができます
ここでの配列は5要素を持ち、整数型と文字列型の混在した配列データとなっています
なおArray関数で代入する場合は、要素が全て文字列型で統一されていたとしても代入する変数はVariant型にする必要があります
(その辺の解説はこちらの記事を見てください)

また、上記にもあるようにArray関数で作成するのは1次元配列なので選択範囲が3行あっても1行ごとの内容はすべて同じになっています
そして、配列の要素数以上のセルには「#N/A」が入力されます

そしてこの配列が扱うデータというのは、数値や文字列だけでなくオブジェクトも扱いますので、シートやセルなども配列の要素にすることができます
特にシートの複数選択の際にはArray関数を使用してシートの指定を行います
これに関してはマクロの記録でワークシートの複数選択を行った際に、自動的にArray関数が作成されていることで確認できます
なおこれはシート名の文字列型を配列データとして扱っており、シート自体を配列として取得しているわけではありません

配列を使う理由について

この配列という考え方は、正直なくても処理の作成は全く問題なく行うことができます

シートの複数選択にしても、シートごとに1枚ずつ処理をしていけばいいだけなので配列を使用しなくても処理を作ることは可能です

ですがこの配列というものをあえて使う目的は、配列のデータをメモリ上で操作することが可能になる事です

例えばシートの複数選択に関して言えばシートごとに処理を行う場合はシートを切り替えながら処理をしていく必要があります
それを複数選択で、一括処理を行えばシートの切り替えが必要なくなり処理速度の向上を図れます

画面更新の抑止や再計算を停止する方法での処理速度の向上の方法がありますが、メモリ上でデータを更新し一括でデータを出力することで、これらの処理速度向上の処理を行わずとも圧倒的に速く処理を行うことができるようになります

この圧倒的に速くという言葉通り、二つの方法を使用できる技量があれば選択の余地がないほど処理速度に差があります
記事中程の画像の動きでもそうですが、セル1つ1つに入力するより一括入力を行う方が速いです

VBAの初心者を脱した辺りで、処理速度に興味がいった時点で考えるのがセル選択を減らすことです、セル選択はそれだけで重たい処理になります
その次にこの出力回数を減らすことを考えてみてください
そのためによく使用するのがこのArray関数です