Home » Excel VBA Rangeオブジェクト » VBAで特定のセル範囲内にあるかどうかを判定する

VBAで特定のセル範囲内にあるかどうかを判定する

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2503(ビルド18623.20156クイック実行)

「vba セル 範囲の判定」
といった検索キーワードでアクセスがありました。

Excel VBAで、何らかのセルが、特定のセル範囲内にあるかどうかを判定するには、どのようなコードを書けばいいのかを調べていらしたのでしょうか。

[スポンサードリンク]

特定のセル範囲内にあるかどうかを判定するサンプルマクロ

以下のExcelマクロで、アクティブセルがB2:G7セル内あるかどうかを判定できます。

Sub アクティブセルが特定のセル範囲内にあるかを判定する()

 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 If
 
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

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » VBAで特定のセル範囲内にあるかどうかを判定する

「Excel VBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.