https://www.moug.net/faq/viewtopic.php?t=82813
連続したセルと離れたセルを選択
について、バルバロッサ さん
引用:
Range("B2:F2,B4:F4").Select
と連続したセルを指定する場合はコロン:
を使い,離れたセルを指定する場合はコンマ,
引用:
B2〜F2を連続したセルを指定する場合
Range(Cells(2,2), Cells(2,6)).Select
とコンマで指定すると思います。
これをコロンに変えるとエラーが出る
との事ですが、
使用している Range は Rangeプロパティーです
Application.Range プロパティ (Excel)
https://learn.microsoft.com/ja-jp/office/vba/api/excel.application.range
引用:
Cell1 必須 バリアント型 (Variant) 範囲の名前を指定します。 A1 形式の参照をコード記述時の言語で指定します。 範囲名には、範囲を表す演算子 (:)、共通部分を表す演算子 (スペース)、または複数の範囲を表す演算子 (,) を含めることができます。 ドル記号を含めることもできますが、無視されます。 範囲の任意の部分でローカル定義名を使用します。 名前を使用する場合、その名前はコード記述時の言語で表されたものと見なされます。
Cell2 省略可能 バリアント型 (Variant) セル範囲の左上隅と右下隅のセルを指定します。 各引数には、単一のセル、列全体、または行全体を含む Range オブジェクト、あるいはコード記述時の言語で単一のセルの名前を示す文字列を指定できます。
引用:
Range("B2:F2,B4:F4")
は、『,』が文字列の中 に含まれていて
Rangeプロパティーに対しては 第一引数 のみの指定
引用:
Range(Cells(2,2), Cells(2,6))
は、『,』は、Rangeプロパティー の 引数の 区切りを示す記号として使用され
Rangeプロパティーに対しては 第一 第二 引数の指定
を行っている事になります。
「,」の役割が違っている事を理解する必要があります。
そのうえで、
引用:
これをコロンに変えるとエラーが出る
は、引数の区切り記号を、「:」に変えており、そういう構文は無いのでエラーになっています。
引用:
例えば , A1, B3, B7を選択する場合
については、
Range(Cells(1, "A").Address & "," & Cells(3, "B").Address & "," & Cells(7, "B").Address).Select
の様なやり方もあります。
ただ、コードを記載する上で、わざわざ.Address を指定するよりは
Union の方が すっきりしますね。