【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.