VBAで高速処理に欠かせない配列処理
ExcelVBAマクロは動作が遅いと言われがちです。それは大きな間違いです。
大体そういう方は、大量のデータをワークシート内のセルで、検索、代入、計算しており、
その処理方法が間違いです。
一次元配列もしくは二次元配列にデータを格納してから処理をすることで、
速度の改善が見込めます。
今回は配列の中身=値を取得する方法です。ForEach文で取得可能です。
配列の値を取得する(1次元)ForEach
Public Sub sample1D() Dim arr(2) As Variant '■配列にデータを格納 arr(0) = 1 arr(1) = 2 arr(2) = 3 '■For Each文で取得する Dim tmp As Variant For Each tmp In arr Debug.Print tmp Next '■結果 '1 '2 '3 End Sub
配列の値を取得する(2次元)ForEach
Public Sub sample2D() Dim arr(2,1) As Variant '■配列にデータを格納 arr(0, 0) = 1 arr(0, 1) = "あ" arr(1, 0) = 2 arr(1, 1) = "い" arr(2, 0) = 3 arr(2, 1) = "う" '■For Each文で取得する Dim tmp As Variant For Each tmp In arr Debug.Print tmp Next '■結果 '1 '2 '3 'あ 'い 'う End Sub
注意点
本記事はForEach文です。
For文でも同様に取得が可能です。取得結果に注意しながら使用可否決めて頂ければと思います。
コメント