構文
Range.CurrentRegion
CurrentRegion・・・指定したセル範囲のアクティブセル領域を取得するプロパティ
マクロを実行する際、処理する件数が可変な場合は多いです。
最終行や最終列を取得して判断してもよいのですが、
単純にセル範囲をフォーマットをコピーする場合などはCurrentRegionを使用した方がスムーズでしょう。
セルの表範囲を取得するコードサンプル
サンプルのシート状態は以下とします。
Public Sub sample() '■セルが属する表範囲を取得 Debug.Print Range("A1").CurrentRegion.Address '$A$1:$D$4 '■表の間の空白部分を選択しても表範囲を取得 Debug.Print Range("B3").CurrentRegion.Address '$A$1:$D$4 '■表の一つ下の空白行や空白列は指定セル範囲に属す扱いになる Debug.Print Range("B3").CurrentRegion.Address '$A$1:$D$5 '■表に属さないと該当セルのみ取得 Debug.Print Range("A6").CurrentRegion.Address '$A$6 End Sub
注意点
- 今回はシート名などは明示していませんのでActiveSheetから取得します。
- 別のシートや別のブックのセル範囲を取得する場合は、Worksheetsを事前に指定しましょう。
ワークシート名を変数にSetし、短い名前で利用する【マクロ初級者必読】 - 今回データを取得している範囲はアクティブセル範囲です。
- アクティブセル範囲とはキーボードの Ctrl + A で取得できるセル範囲です。
- ワークシートのすべてのセル範囲を取得する場合は UsedRangeプロパティで取得可能です。
- データをコピーする際にタイトル行(ヘッダー行)をコピーしたくない場合はOffsetを上手く使います。
関連記事
ExcelVBAマクロ「最終行」「最終列」の判断処理をパーツ化する
ExcelVBAマクロ-他ブック他シートの「最終行」「最終列」取得処理をパーツ化する
コメント