UsedRangeプロパティ

テーマ:

今回はUsedRangeプロパティです


これは使用済のセル範囲を選択する機能です
以前にも似た機能がありましたね
CurrentRegionプロパティです
詳細はこちらです

http://okheeoffice.com/study-vba/0019

 

CurrentRegionプロパティは
アクティブセル範囲を返します


UsedRangeプロパティは
使用したセル範囲を返します


そして
大きな違いは
CurrentRegionプロパティが
Rangeオブジェクトに属し
UsedRangeプロパティは
Worksheetオブジェクトに属します

これはリファレンスの引用です


左側上部を見てください
・・・>Excel VBAリファレンス >オブジェクトモデル>Worksheetオブジェクト
のUsedRangeプロパティ

 

・・・>Excel VBAリファレンス >オブジェクトモデル>Rangeオブジェクト
のCurrentRegionプロパティ

 

となっています

 

オブジェクトは階層構造で下部に
メソッドやプロパティを持っています


分類先が違うという事は
働きや効果が違うということです

 

CurrentRegionセルに対して
働きかけるものであり
UsedRangeシートに対して
働きかけるものです

 

ちょっと難しい話ですが
階層構造を意識して違いを
イメージして下さい

 

似かよった結果が得られる機能ですが
働き先が違うので作業手順も違います
細かな条件設定も違ってきます

 

これらの違いは
働きかける物(オブジェクト)の違いから
生まれるものです

 

 

それではリファレンスを読みましょう
Worksheet.UsedRange プロパティ (Excel)
オブジェクトを返すプロパティです
指定されたワークシートで使われたセル範囲
(Range オブジェクト) を返します
値の取得のみ可能です

構文
式.UsedRange
式 Worksheet オブジェクトを表す変数です

https://msdn.microsoft.com/ja-jp/library/office/ff840732.aspx

 

ここでのポイントは上記赤文字部分です
指定されたワークシートとありますので
ワークシートを指定することは必須条件です


また
使われたセル範囲なので
Specialcellsのように特定の条件は
設定できません

 

選択される範囲は
Ctrl+Endで選択される最終セルと
最初に選択したセルで囲まれる範囲になります

実際に動かして確認しましょう

これはCurrentRegionで使ったものです
同じものをUsedRangeで動かしてみます

同じ結果になりました

 

ではCurrentRegionがうまく動かなかったケースで
試してみます

 

指定したセルが選択範囲内になかったので
正しく動かなかった例です

 

同じものをUsedRangeで動かしてみます

 

UsedRangeでは正しく動いています

 

この違いは
CurrentRegion
セルに対して働きかけるので
指定セルが選択範囲内にないと
エラーになります

 

UsedRange
シートに対して働きかけるので
エラーにならないのです


ただし
UsedRangeでも
どのシートを選択しているかを
明示することを確実にしましょう
その方が汎用性を高めます

 

あと1つ実験します

これはCtrl+Endで使ったものです


CurrentRegionUsedRange
試してみます

 

CurrentRegionの結果です

 

UsedRangeの結果です

 

CurrentRegionとUsedRangeの違い
わかりましたね
僕はUsedRangeをよく使用しますよ

 

http://okheeoffice.com/study-vba/0022