Excel VBAを使ってマクロを作成する際、入力済みのデータ範囲や連続したセルの範囲を自動的に取得したい場面はよくあります。
本記事では、以下の2つの代表的な手法を用いて、使用されているセル範囲を取得する方法をわかりやすく解説いたします。
CurrentRegion
:連続したセル範囲を取得するUsedRange
:シート上で使用されているすべてのセル範囲を取得する
目次
CurrentRegion
:隣接するセルのかたまりを取得
CurrentRegion
は、指定したセルの周囲にある空白で囲まれた連続セル範囲を自動で認識して取得してくれる便利なプロパティです。
以下のように使います。
Range("C3").CurrentRegion.Select
解説:
Range("C3")
を基準として、その周囲に連続してデータが入力されているセルをまとめて選択します。- セル間に空白行・空白列があると、そこで区切られます。
使用例:
もし以下のような表があった場合:
C D E
-----------------
3 | 商品 | 数量 | 単価
4 | りんご | 10 | 100
5 | みかん | 20 | 80
この状態で Range("C3").CurrentRegion.Select
を実行すると、C3:E5 の範囲が選択されます。
UsedRange
:シート全体で使われている範囲を取得
UsedRange
は、そのワークシート上で一度でも使用されたことがあるセル範囲全体を取得する方法です。
ActiveSheet.UsedRange.Select
特徴:
- 空白セルを含めて、最初の使用セルから最後の使用セルまでの範囲を全て含みます。
- セルを削除したあとでも、UsedRangeの範囲が残ることがあるため、正確な範囲を得たい場合は注意が必要です。
CurrentRegion
とUsedRange
の違い
項目 | CurrentRegion | UsedRange |
---|---|---|
基準 | 指定セルから | シート全体 |
空白の影響 | 空白セルで区切られる | 空白セルも含まれることがある |
範囲の調整 | 周囲のデータに依存 | 一度でも使われたセル範囲 |
まとめ
使用目的 | 推奨プロパティ | 例 |
---|---|---|
表のようなデータをまとめて取得したい | CurrentRegion | Range("C3").CurrentRegion.Select |
シート全体で使われている範囲を取得したい | UsedRange | ActiveSheet.UsedRange.Select |
VBAでセル範囲を柔軟に扱いたい場合には、CurrentRegion
とUsedRange
を状況に応じて使い分けることが重要です。特に、表形式のデータを対象とするマクロではCurrentRegion、シート全体の検査やクリア処理ではUsedRangeが便利です。