Rangeの引数指定についておさらい(Tips-8)
久しぶりにコードを書くと、Rangeの引数で:(コロン)を使えば良いのか,(カンマ)を使えば良いのか迷ってしまう時があります(@_@;)
なので、自分の脳内整理を試みようと思います。
Rangeの引数は
- Range(引数1,引数2)
のように2つまで指定することができます。
まず、引数を1つだけ指定する場合についてです。
これはシンプルにいうと、エクセルで範囲指定する際の記述(A1形式)と同じです。
エクセルで A1:B2,D1:E2 は下のような範囲ですが、
この A1:B2,D1:E2 の部分を"(ダブルクォーテーション)で囲んで、文字列として指定します。
- Range("A1:B2,D1:E2")
:(コロン)は連続した範囲を、,(カンマ)は非連続な範囲を指定するときに使います。
※範囲と範囲が隣り合う場合は非連続ではありませんが、分かりやすく非連続と呼ぶことにします。
実際にどんな範囲になるのか、Selectメソッドを使って実験してみましょう。
Range("A1").Select
Range("A1:B2").Select
Range("A1,B2").Select
Range("A1:B2,D1:E2").Select
Range("範囲1").Select 'A1~B2が「範囲1」という名前の場合
Range("A:A").Select '列全体
Range("1:1").Select '行全体
次に、引数を2つ指定する場合についてです。
引数を2つ指定する場合、引数1は先頭セル、引数2は終端セルとなって引数1~引数2の連続した範囲になります。(引数1と引数2は単一セルで指定するのがルールのようです)
実験してみましょう。
Range("A1", "B2").Select
この時,(カンマ)が非連続を意味するものと混同しそうになりますが、これはあくまでも引数1と引数2を区切るためのカンマです。
Range("A1:B2", "D1:E2").Select
引数1と引数2に単一セルではなく、連続範囲を指定すると引数1の左上から引数2の右下までが選択されました。(正式な指定方法ではない)
Range("A1,B2", "D1,E2").Select
引数1と引数2に、非連続範囲を指定するとエラーになりました。(正式な指定方法ではない)
Range("A1", "A2", "A3").Select
ためしに、引数を3つ指定するとエラーになります。(当たり前ですが)
Range(Cells(1, 1), Cells(2, 2)).Select
引数を2つ指定する場合は Cells で指定することもできます。Cells の引数に変数を用いればプログラムの中で自由に範囲変更させることができます。
Range(Cells(1, 1)).Select
ちなみに、引数を1つだけ指定する場合に Cells を使用するとエラーになります。