オーロラさんの勉強帳

SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【Excel VBA エキスパート ベーシック】セルの指定part3 ~CurrentRegion・UsedRange~ (VBA入門13)

 

この記事では、セル範囲を指定できるCurrentRegionプロパティ、UsedRangeプロパティの使い方を紹介します。

 

CurrentRegionプロパティ

CurrentRegionプロパティは、空白の行と列で囲まれた四角形のセル範囲を取得できます。

Excelにて「Ctrl」+「Shift」+「*」のショートカットで選択される範囲と同じ範囲をCurrentRegionは取得します。

行数や列数が変わる表全体のセル範囲を取得する場合によく使います。

 

以下のコードを実行すると、セルB2:D16のセル範囲を選択します。

f:id:auroralights:20201128222446p:plain

f:id:auroralights:20201128222427p:plain

 

空白行と空白列で囲まれた四角形のセル範囲のため、以下のように何もデータがない行が表にあると、空白行とそれ以降の部分は選択されません。

上と同じ以下のコードを実行するとセルB2:D8のセル範囲を選択します。空白行、空白列に囲まれた四角形のセル範囲を取得するので、意図しない空白列、空白行には注意が必要です。

Range("B2").CurrentRegion.Select

f:id:auroralights:20201128222823p:plain

 

よく使う使い方としてはRangeオブジェクト型の変数などにセル範囲を代入して使います。

f:id:auroralights:20201128223807p:plain

f:id:auroralights:20201128223938p:plain

 

UsedRangeプロパティ

UsedRangeプロパティは最初にデータのあるセルを始点として、データがある全セルを含むセル範囲を取得することができます。

Excelの対象のワークブックのセルA1で「Ctrl」+「Shift」+「End」のショートカットキーを押したときのセル範囲とUsedRangeプロパティで取得するセル範囲は同じです。

 

f:id:auroralights:20201128224610p:plain

f:id:auroralights:20201128224556p:plain

 

CurrentRegionプロパティとUsedRangeプロパティの違い・注意点

1.取得するセル範囲の違い

CurrentRegionは空白の行と列で囲まれた四角形のセル範囲を取得

UsedRangeはそのシートのデータがある全セルを含むセル範囲を取得
※UsedRangeはA1を起点にそのシートに存在する最後のセルまでのセル範囲を取得します。

2.指定するオブジェクトの違い

CurrentRegionはRangeオブジェクトに対するプロパティ

UsedRangeはWorkSheets・Sheetsオブジェクトに対するプロパティ

3.UsedRangeのデータ有無の考え

UsedRangeは値が入力されていない罫線、セルの背景色、表示形式などの書式のみ設定されたセルもデータを含んだセルと認識します。意図しないセル範囲を取得してしまうこともあるので注意が必要です。

 

f:id:auroralights:20201128230101p:plain

G2には罫線のみ設定されていますが、UsedRangeではセル範囲に含まれます。

f:id:auroralights:20201128230025p:plain

G22にパーセントの書式を設定しています。UsedRangeプロパティではセル範囲として取得します。

f:id:auroralights:20201128230243p:plain