VBAをはじめたばかりの頃はSelectなどによってセルを選択する際にRangeプロパティーを
使うか、Cellsプロパティーを使うか、迷うことがあるのではないでしょうか?
どちらもRangeオブジェクトを取得することにかわりが、それならばどういう判断基準で
使い分ければよいのでしょうか?
Cellsを使うのかRangeを使うのか、というのは、例えばセルD5を選択するとして・・・
(1) Range("D5").Select
とするか・・・
(2) Cells(5, 1).Select
とするかということです。ここではRangeの特徴について考察します。
■Rangeでしかできないこと■
1.名前でセル(範囲)を指定する
2.複数の独立したセル(範囲)を指定する
3.開始セルと終了セルを指定してセル範囲を取得する
上記の例のような特定の単一セルの指定の場合にはあまり差はありませんが、それぞれ特徴
があります。1〜6の点について順に解説していきます。
○1.名前でセル(範囲)を指定する○
【基本】Range("住所録").Select
【応用】例えばシート1上のセルA1からE20の範囲で”住所録”という名前をつけられた表が
あったとして、表全体をシート2のセルA1を基準として貼り付けるという場合
Range("住所録").Copy Destination:=Sheet2.Range("a1")
(参考:名前を付けるには)
ThisWorkbook.Names.Add "住所録", "=Sheet1!$A$1:$E$20"
※相対参照($マークをつけない)の場合アクティブセルの位置が基準になります
ので注意してください。
○2.複数の独立したセル(範囲)を指定する○
【基本】独立したセル(範囲)はコンマ区切りで指定し、連続するセル範囲を指定するには
コロン(:)で区切る。
Range("A1,D5").Select ’セルA1とD5を選択
Range("A1:D5").Select ’セルA1からD5を選択
Range("A1:D5,E7:J10").Select ’セルA1からD5とE7からJ10を選択
○3.開始セルと終了セルを指定してセル範囲を取得する○
【基本】Range(左上端セル、右下端セル)
セルA1からJ10までをひとつのセル範囲として取得する場合・・・
Range("A1", "J10").Select
Range(Range("A1"), Range("J10")).Select
Range(Cells(1, 1), Cells(10, 10)).Select
上記いずれの記述でも同じです。
※Range("A1", "J10") と Range("A1, J10")とは異なることに注意
※Range型変数を指定することも可能です。
Dim Rng As Range
Set Rng = Range("J10")
Range(Range("A1"), Rng).Select
|