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