関数・メソッド

選択しているセルの表範囲を取得する【CurrentRegionプロパティ】【ExcelVBA】

構文

Range.CurrentRegion

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マクロ-他ブック他シートの「最終行」「最終列」取得処理をパーツ化する

コメント

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