Excelのマクロ(VBA)の配列ってなに?使い方も紹介します
Excelのマクロ(VBA)は、処理スピードが他のプログラム言語に比べて遅い傾向にありますが、配列を使うことで処理が早くなります。
配列は、プログラミングの中で1つの山場かもしれません。
しかし、このページで詳しく紹介しているので、見ていただければ配列がわかるようになります。
では、配列について解説していきます!
Excelのマクロ(VBA):配列とは
配列とは、架空のつらなった箱に値(数字なり、文字)を入れられるものです。
変数は、1つの値・文字しか入れられないですが、配列は指定した数の箱を用意できるので何個でも入ります。
これを、1次元配列と読んだりもします。
2次元配列もあり、このように縦方向と横方向に箱がつらなっているものです。九九の表を思い出してもらうとわかりやすいですね。
Excelのマクロ(VBA):配列の使い方
配列の使い方を紹介します。
配列の宣言
配列を使うには、宣言をする必要があります。
1Dim myArray() As Intger ' 数字の配列
2Dim myArray() As String ' 文字の配列
配列に格納する値の個数が決まっている場合は、数を指定しましょう。
1Dim myArray(5) As Intger
配列の数は、要素数と言います。
5個と決まっているのなら、0,1,2,3,4なので、要素数を5とします。
要素数は1からではなく、0から数えるので注意してください。
配列の初期化
配列に格納する値が決まっている場合は、初期化で値を格納してしまいましょう。
決まっていなければ不要になります。
数字の初期化
1myArray = Array(10, 3, 6) ' 配列の初期化
文字の初期化
1myArray = Array("鈴木", "佐藤", "小林") ' 配列の初期化
このように初期化することもできます。
1myArray(0) = "鈴木"
2myArray(1) = "佐藤"
3myArray(2) = "小林"
配列の要素にアクセス
配列の要素にアクセスするには、このようにします。
if文の比較に使う場合
1If x >= myArray(0) Then
2
3End If
変数に配列の要素を代入する場合
1Dim x As String
2x = myArray(0)
配列といっても、要素数という数字がついているだけで、1つの変数のように使えます。
配列の最大要素数を取得
配列の要素数でループさせたり、要素数の数によって分岐させたりすることがあります。
そういったときは、このようにして要素数を取得します。
1UBound(myArray) + 1 ' 配列の要素数を取得
もし、5つの値が格納されていたら、要素数4が取得されるので+1して5としています。
Excelのマクロ(VBA):2次元配列の使い方
2次元配列の使い方を紹介します。
2次元配列が使えると、1つのワークシートを1つの2次元配列に入れられるので、ものすごい処理が早くなるので覚えてほしいです。
宣言と初期化
縦3、横3の2次元配列を宣言するには、次のようにします。
1Dim myArray(0 To 3, 0 To 3) As String ' 2次元配列の宣言
2myArray(0, 0) = "佐藤" ' 要素へのアクセス
宣言の際に数がわからなければ、記載しなくても問題ありません。
このように配列の宣言をしておいて、後から1次元、2次元配列どちらにでも変化させることが可能です。
1Dim myArray() As String ' 2次元配列の宣言
配列による高速化
2次元配列にワークシートの内容を格納し、配列で処理することでセルへの描写が無くなり、処理の高速化につながります。
例えば、A1からB100までの範囲で処理をしたい場合は次のようにします。
1Dim myArray() As Variant
2myArray = Range("A1:B100")
3'・・・処理・・・
4Range("A1:B100") = myArray
処理が終わると、配列をセルへ転記しています。
一度に転記することで、毎回転記するより早くなるということですね。
Excel VBAを勉強するなら「できる大辞典」がおすすめです。
辞書なのでピンポイントで学ぶことができます。大学時代、2016年版を購入して勉強していましたが相当使いました。
ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。