目次

ワークシートで使用中のセル範囲を取得したい

今回の投稿では、 Excel VBA の UsedRange プロパティを使用して、現在のワークシートで使用されているセル範囲を取得するマクロを作成してみたいと思います。

例として以下の画像のワークシートを準備してみました。

ワークシートの A1:C3 と E5:G7 の範囲に文字が入力されています。

D 列と 4 行目は空白列、空白行になっています。

このワークシートの使用中のデータ範囲は、 A1:G7 になると思います。

A1:C3 と E5:G7 の範囲に文字が入力されているワークシートです。
A1:C3 と E5:G7 の範囲に文字が入力されているワークシートです。

目次まで戻る

マクロの一例

以下の Excel マクロを作成してみました。マクロの一例としてご覧下さい。

UsedRange プロパティを使用して、現在のワークシートのデータ範囲を取得しています。

UsedRange プロパティは、ワークシートで現在使用されているデータ範囲を Range オブジェクトで取得可能なプロパティです。

Sub ワークシートで使用されているセル範囲を取得するマクロ()

MsgBox ActiveSheet.UsedRange.Address

End Sub

上のマクロを実行すると以下の画像の結果になりました。

メッセージダイアログに「 A1:G7 」のセル範囲のアドレスが出力されていますね。

マクロの実行結果の画面です。メッセージダイアログに「A1:G7」が出力されています。
マクロの実行結果の画面です。メッセージダイアログに「A1:G7」が出力されています。

メッセージダイアログの拡大画像です。

メッセージダイアログに「A1:G7」が出力されています。
メッセージダイアログに「A1:G7」が出力されています。

目次まで戻る

セル範囲を選択をするマクロ

もう一つマクロを作成してみました。取得したセル範囲が目で見てわかりやすいように、セル範囲を選択してみます。

UsedRange プロパティで取得したセル範囲を Select メソッドで選択しています。

Sub ワークシートで使用されているセル範囲を選択して取得するマクロ()

    With ActiveSheet.UsedRange
    
        .Select
        MsgBox .Address
        
    End With

End Sub

上のマクロを実行してみると以下の画像の結果になりました。

UsedRange プロパティで取得したセル範囲が選択状態になっていますね。

A1:G7 が選択状態になっています。メッセージダイアログに「A1:G7」が出力されています。
A1:G7 が選択状態になっています。メッセージダイアログに「A1:G7」が出力されています。

メッセージダイアログの拡大画像です。

メッセージダイアログに「A1:G7」が出力されています。
メッセージダイアログに「A1:G7」が出力されています。

目次まで戻る

CurrentRegion プロパティの場合

CurrentRegion プロパティの場合、連続するデータ範囲を取得するので、空白行、空白列がある場合、離れた場所にセル範囲がある場合は、 UsedRange プロパティを使用するのが便利そうです。

Sub CurrentRegionプロパティが返す範囲を取得するマクロ()

    With Range("A1").CurrentRegion
    
        .Select
        MsgBox .Address
        
    End With

End Sub

上のマクロを実行してみると、以下の画像の結果になりました。

A1 を基準にしているので、 A1 に連続するデータの範囲が選択、取得されていますね。

A1:C3 の範囲が選択状態になっています。メッセージダイアログに「A1:C3」が出力されています。
A1:C3 の範囲が選択状態になっています。メッセージダイアログに「A1:C3」が出力されています。

メッセージダイアログの拡大画像です。

メッセージダイアログに「A1:C3」が出力されています。
メッセージダイアログに「A1:C3」が出力されています。

上のマクロの「With Range("A1").CurrentRegion」の行を「With Range("D4").CurrentRegion」に変更すると A1:G7 の範囲を取得する事ができました。

空白列、空白行を基準にしても連続データを取得しているようです。

Sub CurrentRegionプロパティが返す範囲を取得するマクロ_D4基準()

With Range("D4").CurrentRegion

.Select
MsgBox .Address

End With

End Sub

目次まで戻る

テスト環境

  • Windows 11 Home 64 ビット
  • Microsoft Excel for Microsoft 365

    以上、閲覧ありがとうございました。

    目次まで戻る

    同じカテゴリの投稿(Excel VBA)

    前後の投稿