目次
ワークシートで使用中のセル範囲を取得したい
今回の投稿では、 Excel VBA の UsedRange プロパティを使用して、現在のワークシートで使用されているセル範囲を取得するマクロを作成してみたいと思います。
例として以下の画像のワークシートを準備してみました。
ワークシートの A1:C3 と E5:G7 の範囲に文字が入力されています。
D 列と 4 行目は空白列、空白行になっています。
このワークシートの使用中のデータ範囲は、 A1:G7 になると思います。
マクロの一例
以下の Excel マクロを作成してみました。マクロの一例としてご覧下さい。
UsedRange プロパティを使用して、現在のワークシートのデータ範囲を取得しています。
UsedRange プロパティは、ワークシートで現在使用されているデータ範囲を Range オブジェクトで取得可能なプロパティです。
Sub ワークシートで使用されているセル範囲を取得するマクロ()
MsgBox ActiveSheet.UsedRange.Address
End Sub
上のマクロを実行すると以下の画像の結果になりました。
メッセージダイアログに「 A1:G7 」のセル範囲のアドレスが出力されていますね。
メッセージダイアログの拡大画像です。
セル範囲を選択をするマクロ
もう一つマクロを作成してみました。取得したセル範囲が目で見てわかりやすいように、セル範囲を選択してみます。
UsedRange プロパティで取得したセル範囲を Select メソッドで選択しています。
Sub ワークシートで使用されているセル範囲を選択して取得するマクロ() With ActiveSheet.UsedRange .Select MsgBox .Address End With End Sub
上のマクロを実行してみると以下の画像の結果になりました。
UsedRange プロパティで取得したセル範囲が選択状態になっていますね。
メッセージダイアログの拡大画像です。
CurrentRegion プロパティの場合
CurrentRegion プロパティの場合、連続するデータ範囲を取得するので、空白行、空白列がある場合、離れた場所にセル範囲がある場合は、 UsedRange プロパティを使用するのが便利そうです。
Sub CurrentRegionプロパティが返す範囲を取得するマクロ() With Range("A1").CurrentRegion .Select MsgBox .Address End With End Sub
上のマクロを実行してみると、以下の画像の結果になりました。
A1 を基準にしているので、 A1 に連続するデータの範囲が選択、取得されていますね。
メッセージダイアログの拡大画像です。
上のマクロの「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
以上、閲覧ありがとうございました。