VBATips

ヘッダー行(見出し)を除いて表範囲を取得する【CurrentRegion応用】【ExcelVBA】

指定したセル範囲のアクティブセル領域(表範囲)を取得するのは、
CurrentRegionプロパティですぐに取得が出来ます。※可変の最終行などを取得する必要はありません。

実際業務で使う場合、見出し行を除いた有効なデータのみ必要なケースが多くあります。

(例)
・インポート用のCSVデータに変換する際、ヘッダー部は外さないといけない。
・支店からのデータを結合して、本部に提出しないといけない。

ヘッダー行(見出し)を除いて表範囲を取得するサンプルコード

サンプルのシート状態は以下とします。

vba-get-table currentregion

Public Sub sample()
    
    '■セルB3を含む表のヘッダーを除いたデータをselectする
    With Range("B3").CurrentRegion
        .Resize(.Rows.Count - 1).Offset(1).Select
    End With
    
    'Resize(.Rows.Count - 1)でアクティブセル範囲を一行少なくする
    'Offset(1)で一行ずらす(ヘッダー行から選択されている状態から、データ範囲から選択する)
    
    '■取得したデータのチェック
    Debug.Print Selection.Address   '$A$2:$C$7
    
End Sub

注意点

CurrentRegionプロパティの応用ですが、それ以外にも以下の内容も理解しないといけません。
・Withステートメント(コード記載の冗長化を防ぐ)
・Resizeプロパティ(指定サイズを変更する)
・Offsetプロパティ(指定範囲をずらす)

関連記事

選択しているセルの表範囲を取得する【CurrentRegionプロパティ】【ExcelVBA】
Rangeを開始行・列/最終行・列に変換する【ExcelVBA】
他ブック他シートの「最終行」「最終列」取得処理をパーツ化する
配列にセル範囲を格納/動的配列をセルに貼付【ExcelVBA】

コメント

タイトルとURLをコピーしました