「vba セル 範囲の判定」
といった検索キーワードでアクセスがありました。
Excel VBAで、何らかのセルが、特定のセル範囲内にあるかどうかを判定するには、どのようなコードを書けばいいのかを調べていらしたのでしょうか。
特定のセル範囲内にあるかどうかを判定するサンプルマクロ
以下のExcelマクロで、アクティブセルがB2:G7セル内あるかどうかを判定できます。
Const RNG_ADDRESS = "B2:G7"
Dim ret As Range
Set ret = Application.Intersect(ActiveCell, Range(RNG_ADDRESS))
If ret Is Nothing Then
MsgBox "アクティブセルは" & RNG_ADDRESS & "内にはありません。"
Else
MsgBox "アクティブセルは" & RNG_ADDRESS & "内にあります!"
End Sub
Excel.Application.Intersectで判定できる
Application.Intersectメソッドは、引数に指定された複数のRangeオブジェクトの、重なっているセルを表すRangeオブジェクトを返し、重なっている部分がなければNothingを返します。
重なっている部分がなければNothingを返すという性質を利用して、アクティブセルが特定のセル範囲内にあるかどうかを判定できるわけです。
Set ret = Application.Intersect(ActiveCell, Range(RNG_ADDRESS)) If ret Is Nothing Then MsgBox "アクティブセルは" & RNG_ADDRESS & "内にはありません。"
ちなみに、Application.Intersectメソッドはグローバルメンバーでもありますから、
上記の
Set ret = Application.Intersect(ActiveCell, Range(RNG_ADDRESS))
は、「Application.」を省略して
Set ret = Intersect(ActiveCell, Range(RNG_ADDRESS))
のように書くこともできます。
最終更新日時:2025-04-22 0;24
- Newer:VBAで全ワークシートの印刷範囲を確認する
- Older:クリスタでコマ枠をコマ内のレイヤー・画像ごと移動する
Home » Excel VBA Rangeオブジェクト » VBAで特定のセル範囲内にあるかどうかを判定する