指定したセル範囲のアクティブセル領域(表範囲)を取得するのは、
CurrentRegionプロパティですぐに取得が出来ます。※可変の最終行などを取得する必要はありません。
実際業務で使う場合、見出し行を除いた有効なデータのみ必要なケースが多くあります。
(例)
・インポート用のCSVデータに変換する際、ヘッダー部は外さないといけない。
・支店からのデータを結合して、本部に提出しないといけない。
・インポート用のCSVデータに変換する際、ヘッダー部は外さないといけない。
・支店からのデータを結合して、本部に提出しないといけない。
ヘッダー行(見出し)を除いて表範囲を取得するサンプルコード
サンプルのシート状態は以下とします。
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】
コメント