【VBA】データのセル範囲を作成する
普段、主にSalesforce関連の開発を行っているのですが、最近は何故かVBAをいじっています。
汎用性を持たせてという言葉がついているので、ある程度の設定をユーザが出来るようにしています。
同じようなメソッドを何度か作ったので、コピペ用にメモです。
具体的には、指定したRangeからテーブル状に枠を広げたRangeを作成するというものです。
本当にただ広げるだけです。
' -------------------------------------------------------------------------- ' ' 引数を始点として、データのセル範囲を作成する ' ' -------------------------------------------------------------------------- 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
例として、選択中のセルからセル範囲を作成します。
' -------------------------------------------------------------------------- ' ' 選択中のセルからセル範囲を作成する ' ' -------------------------------------------------------------------------- Public Sub callCreateTableRange() Dim firstRange As range Dim tableRange As range ' 選択中のセルを取得する Set firstRange = ActiveCell ' 選択中のセルから範囲を作成する Set tableRange = createTableRange(firstRange) ' セル範囲を選択する tableRange.Select End Sub
実際には始点のセルを定数に持たせておいて、そこから設定テーブルの範囲を作成する感じになります。
とても単純な動作なのですが、毎度書くより便利です。
No comments.