ワークシートで使用中のセル範囲を取得するプロパティとして、UsedRange
と CurrentRegion
の二つがあります。これらの特徴と使い分けについて説明します。
ワークシート全体を For Each
文などで処理すると、1,048,576行 × 16,384列が対象となり無駄が多くなります。そこで、これらのプロパティを使って使用中のセル範囲を取得して対象を限定します。似た用途のプロパティですが、異なる点も多いので、うまく使い分けましょう。
UsedRange と CurrentRegion の基本と使いどころ
どちらもRangeオブジェクトを返します。
Dim rngUR As Range
Set rngUR = ActiveSheet.UsedRange
Dim rngCR As Range
Set rngCR = ActiveCell.CurrentRegion
UsedRange
は、Worksheetオブジェクトに対するプロパティです。
使用中の左上端セルから右下端セルの範囲を取得します。
入力途中の空行がある表や不定形の表を処理するのに向いています。
CurrentRegion
は、起点となるRangeオブジェクトに対するプロパティです。
起点から連続入力されているセルの範囲を取得します。
読み込んだデータなど、整形された表を処理するのに向いています。
それぞれの特徴と注意
書式設定もUsedRangeの対象
UsedRange
では、空セルが範囲に含まれることがあります。これは、フォントや罫線の設定も「使用中」の対象になるためです。「太字」が設定された空セルなど目視で確認できないので要注意です。
起点の周囲がCurrentRegionの判定対象
UsedRange
やCurrentRegion
で得た範囲をすべて処理するのは避けましょう。例えば、「A列に数値が入力されている行のみ」のような条件判定を追加しておくことをお勧めします。