「rangeオブジェクトに対してrangeプロパティを使う」
という検索キーワードでアクセスがありました。
調べてみると、
Range("B1:D4").Range("B1")
のような、RangeオブジェクトのRangeプロパティを使ったコードを紹介しているページが、
みつかります。
Rangeオブジェクトに対してRangeプロパティを使った場合
RangeオブジェクトのRangeプロパティを使っている、
Range("B1:D4").Range("B1")
というオブジェクト式が、どのセルを表すRangeオブジェクトを返すか、わかりますか?
B1:D4セルの中で、B1的な位置にあるセル(つまり2列目1行目のセル)ですから、C1セルを表すRangeオブジェクトを返します。
間違ってはいませんが、このようなコードを書くことを私はおすすめしません。
知識として知っておくのは、もちろん悪くはありませんけれど、他の人が読むプロシージャに、
Range("B1:D4").Range("B1")
といった可読性の低い紛らわしいコードを残すことは、全くおすすめできません。
RangeオブジェクトのItemプロパティがおすすめ
B1:D4セルの中で、1行目2列目のセルを表すRangeオブジェクトを取得する必要がある場合、私ならば、
Range("B1:D4").Item(1, 2)
と書きます。
RangeオブジェクトのItemプロパティを使うと、何行目・何列目といった数値を指定して、Rangeオブジェクトを取得できます。
コレクションとしてのRangeオブジェクトから、単独のRangeオブジェクトを取得するのがItemプロパティです。
なお、Excel VBAの経験があっても、RangeオブジェクトのItemプロパティはご存知の方がどうも少ないようですから、その場合Cellsプロパティを使った、
Range("B1:D4").Cells(1, 2)
です。
Cellsは実際には引数を指定できないプロパティですから、
Range("B1:D4").Cells(1, 2)
は結局、
Range("B1:D4").Cells.Item(1, 2)
の省略形なのですが。
- Newer:VBAでコネクタだけを削除する
- Older:日付軸の表示形式-TickLabels.NumberFormatLocal
Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Rangeオブジェクトに対してRangeプロパティを使う?