この記事では、セル範囲を指定できるCurrentRegionプロパティ、UsedRangeプロパティの使い方を紹介します。
CurrentRegionプロパティ
CurrentRegionプロパティは、空白の行と列で囲まれた四角形のセル範囲を取得できます。
Excelにて「Ctrl」+「Shift」+「*」のショートカットで選択される範囲と同じ範囲をCurrentRegionは取得します。
行数や列数が変わる表全体のセル範囲を取得する場合によく使います。
以下のコードを実行すると、セルB2:D16のセル範囲を選択します。
空白行と空白列で囲まれた四角形のセル範囲のため、以下のように何もデータがない行が表にあると、空白行とそれ以降の部分は選択されません。
上と同じ以下のコードを実行するとセルB2:D8のセル範囲を選択します。空白行、空白列に囲まれた四角形のセル範囲を取得するので、意図しない空白列、空白行には注意が必要です。
Range("B2").CurrentRegion.Select
よく使う使い方としてはRangeオブジェクト型の変数などにセル範囲を代入して使います。
UsedRangeプロパティ
UsedRangeプロパティは最初にデータのあるセルを始点として、データがある全セルを含むセル範囲を取得することができます。
Excelの対象のワークブックのセルA1で「Ctrl」+「Shift」+「End」のショートカットキーを押したときのセル範囲とUsedRangeプロパティで取得するセル範囲は同じです。
CurrentRegionプロパティとUsedRangeプロパティの違い・注意点
1.取得するセル範囲の違い
CurrentRegionは空白の行と列で囲まれた四角形のセル範囲を取得
UsedRangeはそのシートのデータがある全セルを含むセル範囲を取得
※UsedRangeはA1を起点にそのシートに存在する最後のセルまでのセル範囲を取得します。
2.指定するオブジェクトの違い
CurrentRegionはRangeオブジェクトに対するプロパティ
UsedRangeはWorkSheets・Sheetsオブジェクトに対するプロパティ
3.UsedRangeのデータ有無の考え
UsedRangeは値が入力されていない罫線、セルの背景色、表示形式などの書式のみ設定されたセルもデータを含んだセルと認識します。意図しないセル範囲を取得してしまうこともあるので注意が必要です。
G2には罫線のみ設定されていますが、UsedRangeではセル範囲に含まれます。
G22にパーセントの書式を設定しています。UsedRangeプロパティではセル範囲として取得します。