セルからの取得、セルへの出力 - 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を操作することだけ可能で、背景色やサイズ変更をまとめて行うことはできない。

software/microsoft_office/vba/xls_interchange_cell.txt · 最終更新: 2018/10/15 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0