HOME > 即効テクニック > Excel VBA > その他関連のテクニック > VBA入門者の”どっち?” Cells or Range−Rangeでしかできないこと

VBA入門者の”どっち?” Cells or Range−Rangeでしかできないこと|Excel VBA

その他関連のテクニック

VBA入門者の”どっち?” Cells or Range−Rangeでしかできないこと

(Excel 2000/2002/2003/2007/2010)

VBAをはじめたばかりの頃はSelectなどによってセルを選択する際に
Rangeプロパティを使うか、Cellsプロパティを使うか、迷うことがあるのではないでしょうか?
どちらもRangeオブジェクトを取得することにかわりはありませんが、
それならばどういう判断基準で使い分ければよいのでしょうか?

Cellsを使うのかRangeを使うのか、というのは、例えばセルD5を選択するとして・・・

(1) Range("D5").Select

とするか・・・

(2) Cells(5, 4).Select

とするかということです。ここではRangeの特徴について考察します。

■Rangeでしかできないこと■

  1. 名前でセル(範囲)を指定する
  2. 複数の独立したセル(範囲)を指定する
  3. 開始セルと終了セルを指定してセル範囲を取得する

上記の例のような特定の単一セルの指定の場合にはあまり差はありませんが、それぞれ特徴があります。
上記3点について順に解説していきます。

○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