Home » Excel VBA Rangeオブジェクト » Excel VBAのUsedRangeとは

対象:Excel2010, Excel2013, Windows版Excel2016

Worksheetオブジェクトに「UsedRange」という名前の、便利ですけれど、少々仕様のわかり辛いプロパティがあります。

このサイト『インストラクターのネタ帳』のアクセスログでも、
「excel2013 vba usedrangeとは」
といった検索キーワードを見かけます。

[スポンサードリンク]

UsedRangeプロパティの返すRangeオブジェクトを確認するサンプルマクロ

以下のようなSubプロシージャで、Worksheet.UsedRangeの仕様を確認してから利用することをおすすめします。

Sub UsedRangeの返すRangeの確認()
 Dim used As Range
 Set used = ActiveSheet.UsedRange
 used.Select
 MsgBox used.Address(False, False)
End Sub

サンプルマクロを実行して確認しましょう

ワークシートにデータ入力したり、セルの書式設定したりしながら、上記のSubプロシージャを実行してWorksheet.UsedRangeが何を返すのかを確認しましょう。

新規シートの場合

新規に作成したばかりのワークシートの場合、

Worksheet.UsedRange:新規ワークシート""

ActiveSheet.UsedRangeはA1セルを表すRangeオブジェクトを返します。

1つのセルにデータが入力されている場合

G7セルだけにデータが入力されているワークシートの場合、

Worksheet.UsedRange:1つのセルにデータ

ActiveSheet.UsedRangeはG7セルを表すRangeオブジェクトを返します。

2つのセルにデータが入力されている場合

例えばB2セルとG7セルだけにデータが入力されているワークシートの場合、

Worksheet.UsedRange:2つのセルにデータ

ActiveSheet.UsedRangeはB2:G7セルを表すRangeオブジェクトを返します。

1つのセルにデータが入力され別の1つのセルに書式設定されている場合

例えばG7セルだけにデータが入力され、C3セルに書式設定されているワークシートの場合、

Worksheet.UsedRange:1つのセルにデータ・1つのセルに書式設定

ActiveSheet.UsedRangeはC3:G7セルを表すRangeオブジェクトを返します。

2つのセルに書式設定されている場合

例えば下図のようにC3セルとF6セルに書式設定されているワークシートの場合、

Worksheet.UsedRange:2つのセルに書式設定

ActiveSheet.UsedRangeはC3:F6セルを表すRangeオブジェクトを返します。

Worksheet.UsedRangeとは

つまりWorksheet.UsedRangeは、基本的にはデータが入力されているかセルの書式設定が行われている、使われているセル範囲を表すRangeオブジェクトを返すプロパティです。

厄介なのは、一見データが入力されていないように見えても、何らかの書式が残っているために、使われていると見なされるケースがあることです。

この記事では、セルの塗りつぶし色を変更した目視確認しやすい例をあげていますけれど、中央揃えなどを設定したあとにデータを削除したようなケースは、かなり気づき辛いはずです。

UsedRangeはWorksheetオブジェクトにだけ用意されている

オブジェクトブラウザーで「usedrange」を検索するとわかるとおり、UsedRangeプロパティはWorksheetオブジェクトにだけ用意されています。

オブジェクトブウラウザー:usedrangeの検索

またグローバルメンバーでもないため、「.UsedRange」の前は、必ずWorksheetオブジェクトを取得するコード(オブジェクト式)でなければなりません。

最終更新日時:2022-07-04 15:38

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Excel VBAのUsedRangeとは

「Excel VBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.