この関数について
ExcelVBA(マクロ)を始める方の中で、Excelのセルや関数について全く知らない状態で始めた方というのは少数派だと思います。そのため、使い慣れたExcel上の表現をExcelVBA上でも使えると便利ですし、可読性もあがると私は考えています。Rangeオブジェクトを使って特定のセルや範囲を指定するとき「A9」や「B5:C10」のような文字列(Rangeのキー)を使用することができます。この関数では、配列のサイズにあったRangeのキーを取得できます。これは配列に格納されたデータを指定の範囲に貼り付けるという動作をするときに便利です。
使い方 ①引数
■引数1:arr
Rangeのキーに変換したい配列を渡します(MAX:2次元)。
使い方 ②返値
例1)arr(0 to 5,0 to 4) ⇒ ”A1:E6″
例2)arr(0 to 5,3 to 7) ⇒ ”A1:E6″
例3)arr(0 to 7) ⇒ ”A1:H1″
使い方 ③呼び出し方例(サンプルコード)
Public Sub Test_ConvertArrayToRangeKey()
Dim arr(0 To 5, 3 To 7) As Long
Dim ws As Worksheet
Dim rng_key As String
Set ws = ThisWorkbook.Worksheets(1)
rng_key = ConvertArrayToRangeKey(arr)
'■セル「A1」から貼り付ける
ws.Range(rng_key).Value = arr
'■セル「A10」から貼り付ける
ws.Range("A10").Range(rng_key).Value = arr
End Sub
【結果】Rangeのキーを取得できました
Rangeに指定するキーを取得できました。サンプルコードではイミディエイトウィンドウへ結果を出力後、そのまま配列のデータをシートへ貼り付けています。関数で取得したRangeのキーにそのまま配列のデータを貼り付けるとセル「A1」を始点としてデータが貼り付けられます。位置を調整する場合、サンプルコードのように、始点となるRangeを指定して貼り付けます。
この関数は関数リファレンスからコピペ可能です!
この記事のタイトルを検索窓へ貼り付けて関数を検索してみましょう。 表示されたコードをクリックするだけでコピー完了! あとは自身で作成したモジュールに貼り付けるだけでこの関数を利用できます。サンプルコードもあり! 関数リファレンストップへ
Comment