この関数について
ExcelVBA(マクロ)では高級なプログラミング言語とは異なり最初からブックやシートが用意されています。そのためデータをセル上でのみ扱ってRPA(自動化)ツールを作成することも可能です。しかし、大量の顧客データなどをすべてセル上で処理すると、目に見えて実行速度が低下します。画面更新を停止するなどの改善策もありますが、一番のおすすめはデータを変数や配列に格納して扱うことです。すでに紹介済のシート内の指定した表を配列で取得する(F0000007)関数で配列にデータを取り込むことができます。加工や集計を実施した後、このデータをcsvファイルなどにエクスポートすることもできますが、元の位置や、別のシートに貼り付けたい場合もあります。このページで紹介する関数では配列のデータを指定位置へ貼り付けることができます。
使い方 ①引数
■引数1:target_2Dim_table
貼り付けたいデータが格納されている2次元配列を指定します。
■引数2:cast_table_in_var_type_code
引数1の配列の2次元目と同じ要素数を持った1次元配列を渡します。この配列には貼り付けるデータの列方向のデータ型を指定します。指定できるデータ型は「vbString」、「vbLong」、「vbDouble」、「vbDate」、「vbVariant」。指定しない場合はVariant型とみなします。例えば8桁固定の製品コードなどはvbStringを指定すると先頭の0が消えません。
■引数3:target_range
データを貼り付ける始点となるセルのRangeオブジェクト
使い方 ②返値
この関数に返値はありません。配列のデータを指定位置へ貼り付けて動作を終了します。
使い方 ③呼び出し方例(サンプルコード)
Public Sub Test_WriteArrayToRange()
Dim target_range As Range
Dim arr(1 To 2, 1 To 3) As Variant
Dim cast_table(1 To 3) As Long
Set target_range = ThisWorkbook.Worksheets(1).Range("A1")
arr(1, 1) = "01234567"
arr(1, 2) = "佐藤"
arr(1, 3) = "5,000円"
arr(2, 1) = "99999999"
arr(2, 2) = "加藤"
arr(2, 3) = "8,000円"
cast_table(1) = vbString
Call WriteArrayToRange(arr, cast_table, target_range)
End Sub
【結果】配列のデータをシートへ貼り付けることができました
上記、サンプルコードを実行すると1番目のシートのセルA1を起点とした「A1:C2」の範囲に配列のデータが貼り付けられます。cast_tableで1列目にString型を指定しているため、”01234567”の先頭の0が貼り付け後も保持されます。
Comment