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

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

コメントを残す

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