ExcelVBA

指定した要素で配列を作成【Array関数】【ExcelVBA】

構文

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】

コメント

タイトルとURLをコピーしました