構文
Array(arglist)
引数 | arglist | 配列へ格納するデータをカンマ(,)で区切って指定 |
戻り値 | 配列を格納したVariantを返します |
VBAで高速処理に欠かせない配列処理
ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。
大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、
その処理方法が間違いです。
一次元配列もしくは二次元配列にデータを格納してから処理をすることで、
速度の改善が見込めます。
ただ、配列処理となると厄介だから勉強していない!という初心者の方も多いでしょう。
単純に、ワークシート内のセル範囲と配列は同様と考えると簡単かもしれません。
Array関数を使用して指定要素を配列に格納する
※注意※Option Base1の影響を受けます。
'■指定した要素で配列を作成する Sub sample_Array_Array() Dim arr As Variant '■下記のように値を代入しなくても ' arr(0) = "ExcelVBA" ' arr(1) = "JavaScript" ' arr(2) = "Python" '■Array関数で一度に代入可能 arr = Array("ExcelVBA", "JavaScript", "Python") MsgBox arr(0) 'ExcelVBA MsgBox arr(1) 'JavaScript MsgBox arr(2) 'Python End Sub
その他
- Option Base 1の影響をうけます。Option Base1の場合はarr(1)、arr(2)、arr(3)に値が格納されます。
- 値を分割して代入したい場合はSplit関数を使用します。
文字列を分割して配列に値を格納する【Split関数】 - Array関数はVariant型の配列を返します。=データ型を指定できません。
- Array関数で二次元配列へのデータの格納は出来ません。
関連記事
配列に値を格納するのはFor Loopと思っているのはもったいないです。
セル範囲をそのまま代入したり、動的に管理する事も出来るので、
VBA開発者は配列で処理するのが基本としてほしいです。圧倒的にスピードが速いです。
以下の関連記事も参考にしてください。
配列の初期化と宣言(静的/動的/1次元/2次元)【ExcelVBA】
配列にセル範囲を格納/動的配列をセルに貼付【ExcelVBA】
コメント