Home » ExcelVBA Rangeオブジェクト » 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オブジェクトを取得するコード(オブジェクト式)でなければなりません。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » UsedRangeとは

TrackBack:2

TrackBack URL
セル結合を解除して同じ値を入力するマクロ from インストラクターのネタ帳
セル結合を解除して同じ値を入力するExcelマクロをご紹介しています。
UsedRangeで最終行番号が取得できない from インストラクターのネタ帳
Excel VBAのUsedRange.Rows.Countは、使用されているセル範囲の行数を取得するだけで、最終行番号を取得するコードではありません。

Home » ExcelVBA Rangeオブジェクト » UsedRangeとは

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

検索


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

.