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が便利です。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
