2次元配列の値をRangeオブジェクトに突っ込むときの配列はVariantでなくても良い(Excel)
2次元配列の値をRangeオブジェクトに突っ込むときの配列はVariantでなくても良い
初歩的過ぎますか?
2次元配列の値を一気にRange
オブジェクトに書き込む処理は、Variant
型の変数を使う例が多かったので、全然気づいていませんでした。
実験
シートモジュールに、次のようなコードを書いてみた。
リスト1 シートモジュール
Private Property Get TestArea() As Range Set TestArea = Me.Range("$D$1:$G$6") End Property Private Sub write2DimensionArray( _ ByVal targetRange As Range) With targetRange Dim rowSize As Long rowSize = .Rows.Count Dim colSize As Long colSize = .Columns.Count End With Dim arr() As String ReDim arr(1 To rowSize, 1 To colSize) Dim r As Long Dim c As Long For r = 1 To rowSize For c = 1 To colSize arr(r, c) = "ち~んw" Next Next targetRange.Value = arr End Sub
シートにTestArea
というプロパティを設置。さらに、引数として渡したRange
オブジェクトの各セルに「ち~んw
」という文字列を書き込むwrite2DimensionArray
というメソッドを作ってみた。
String
型の2次元配列を作り、その値を書き込む、という処理。
実験
次のコードで、引数にTestArea
プロパティが返すRange
オブジェクトを指定してwrite2DimensionArray
メソッドを実行してみる。
リスト2
Private Sub testWrite2DimensionArray() Call write2DimensionArray(TestArea) End Sub
こいつを、シート上のコマンドボタンに登録して呼び出してみる。
フツーに書き込めている。
おわりに
まあ、考えたら当り前のことなのだが、「2次元配列からの転記のときはVariant
」という先入観に囚われていた。