【VBA】データのセル範囲を作成する
普段、主にSalesforce関連の開発を行っているのですが、最近は何故かVBAをいじっています。
汎用性を持たせてという言葉がついているので、ある程度の設定をユーザが出来るようにしています。
同じようなメソッドを何度か作ったので、コピペ用にメモです。
具体的には、指定したRangeからテーブル状に枠を広げたRangeを作成するというものです。
本当にただ広げるだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ' -------------------------------------------------------------------------- ' ' 引数を始点として、データのセル範囲を作成する ' ' -------------------------------------------------------------------------- Public Function createTableRange( ByRef firstRange As Range) As Range Dim tableRange As Range Dim lastRange As Range Dim tableSheet As Worksheet Dim firstCol, firstRow As Integer Dim colIndex, rowIndex As Integer ' シートを取得する Set tableSheet = firstRange.Worksheet ' 最初の行を取得する firstRow = firstRange.Row ' 最初の列を取得する firstCol = firstRange.Column ' 最後の行を取得する rowIndex = firstRange. End (xlDown).Row ' 最後の列を取得する colIndex = firstRange. End (xlToRight).Column ' 最後のセルを取得する Set lastRange = tableSheet.Cells(rowIndex, colIndex) ' セル範囲を作成する Set tableRange = tableSheet.Range(firstRange, lastRange) ' 戻り値に設定する Set createTableRange = tableRange End Function |
例として、選択中のセルからセル範囲を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ' -------------------------------------------------------------------------- ' ' 選択中のセルからセル範囲を作成する ' ' -------------------------------------------------------------------------- Public Sub callCreateTableRange() Dim firstRange As range Dim tableRange As range ' 選択中のセルを取得する Set firstRange = ActiveCell ' 選択中のセルから範囲を作成する Set tableRange = createTableRange(firstRange) ' セル範囲を選択する tableRange. Select End Sub |
実際には始点のセルを定数に持たせておいて、そこから設定テーブルの範囲を作成する感じになります。
とても単純な動作なのですが、毎度書くより便利です。
No comments.