何を求めていらしたのか判断に迷いますが、
「複数の範囲の判定vba」
という検索キーワードに気づきました。
可能性はいくつも考えられますが、
上図のような、複数のセル範囲が選択されているかどうかを判定するコードをご紹介しておきます。
複数のセル範囲が選択されているかを判定するサンプルマクロ
以下のようなプロシージャで、複数のセル範囲が選択されているかを判定できます。If Selection.Areas.Count = 1 Then
MsgBox "1つのセル範囲が選択されています。"
Else
MsgBox "複数のセル範囲が選択されています。"
End If
End Sub
上図のような範囲選択なら
「1つのセル範囲が選択されています。」
下図のような範囲選択なら
「複数のセル範囲が選択されています。」
とメッセージが表示されます。
RangeオブジェクトのAreasプロパティについて
もちろん、ポイントは、
If Selection.Areas.Count = 1 Then
です。
この「.Areas」は、Rangeオブジェクトのプロパティです。
RangeオブジェクトのAreasプロパティは、選択範囲の一塊を1つのItemとして持つ、コレクションオブジェクトとしてのRangeを返します。
Range.Areaプロパティの挙動を確認するサンプルマクロ
説明を読んだだけでは、なかなか理解できないでしょうから、以下のSubプロシージャを実行してみてください。Dim rng As Range
For Each rng In Selection.Areas
MsgBox rng.Address(False, False)
Next rng
End Sub
例えば、A1:B2セルと、C4:C6セルが選択されているときに、
上記のプロシージャを実行すると、
「A1:B2」
「C4:C6」
とメッセージボックスが2回表示されます。
A1:B2セルと、C4:C6セルが選択されているときには、A1:B2セル・C4:C6セルそれぞれを単独オブジェクトとして持つコレクションオブジェクトとしてのRangeを返すので、上記のプロシージャでメッセージボックスが2回表示されます。
一方、セル範囲・A1:C6だけが選択されている場合には、
「A1:C6」
というメッセージボックスだけが表示されます。
これが、RangeオブジェクトのAreasプロパティです。
- Newer:和暦で入力したい
- Older:関数で月を英語表示に-TEXT関数
Home » Excel VBA Rangeオブジェクト » VBAで複数のセル範囲が選択されているかを判定する