【VBA】データのセル範囲を作成する

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です