セルからの取得、セルへの出力 - Excel VBA
VBAからExcelのセルに入力された大量のデータを取り扱うときは、for文などで一つ一つアクセスするとかなり時間がかかってしまう。
Variant型の変数を一つ用意して範囲指定したオブジェクトを代入すると、2次元配列として扱え、高速にアクセスできる。
Dim myVar as Variant myVar = RANGE("A1:G30")
逆に配列(この場合はVariant型で無くても可)をRANGEオブジェクトに代入すると、セルへの書き込みも高速に行える。
RANGE("A1:G30") = myVar
配列は1次がrow、2次がcolumn。Excelでのセル指定(A1: Aがcolumnで1がrow)とは逆順になるので注意。
1次元配列
1次元配列を横に出力したいときは、RANGE()にその形を指定するとそのまま行える。
縦に表示したいときは、ワークシート関数の転置が便利。
"横 RANGE("A1:G1") = myVar "縦 RANGE("A1:A30") = WorksheetFunction.TRANSPOSE(myVar)
留意点
操作できるのは値のみ
この範囲指定の方法はセルのValueを操作することだけ可能で、背景色やサイズ変更をまとめて行うことはできない。