【VBA】使用されているセル範囲を自動で取得する方法|CurrentRegionとUsedRangeの使い分け

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の範囲が残ることがあるため、正確な範囲を得たい場合は注意が必要です。

CurrentRegionUsedRangeの違い

項目CurrentRegionUsedRange
基準指定セルからシート全体
空白の影響空白セルで区切られる空白セルも含まれることがある
範囲の調整周囲のデータに依存一度でも使われたセル範囲

まとめ

使用目的推奨プロパティ
表のようなデータをまとめて取得したいCurrentRegionRange("C3").CurrentRegion.Select
シート全体で使われている範囲を取得したいUsedRangeActiveSheet.UsedRange.Select

VBAでセル範囲を柔軟に扱いたい場合には、CurrentRegionUsedRangeを状況に応じて使い分けることが重要です。特に、表形式のデータを対象とするマクロではCurrentRegionシート全体の検査やクリア処理ではUsedRangeが便利です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次