[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/10/19(Wed) 17:38
投稿者名:ダンボ
URL :
タイトル:
Targetが特定のレンジ内か判定する関数
立て続けですみません。EXCEL2002のVBAで、

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
イベントで、Targetが特定のレンジの中にあるかどうかを見る関数が欲しいです。

If IsInRange(Target, DEFINEDRANGE) then ...という風に使います。

無ければ作るまでですが、何だかVBAまたはExcel関数にありそうな気もします。

検索語をいろいろ変えてみたが、このようなものしか見つかりませんでした。
Private Function isRange(x As Variant, lowerLimit As Variant, _
                         upperLimit As Variant) As String
' LowerLimit<= x <=UpperLimitのとき,Trueを返します.
' 範囲外のとき,Falseを返します.
End Function

投稿時間:2005/10/20(Thu) 11:02
投稿者名:ダンボ
URL :
タイトル:
[解決]Targetが特定のレンジ内か判定する関数
> 無ければ作るまでですが、何だかVBAまたはExcel関数にありそうな気もします。

実質2行で作れてしまったし、センスも良い(ヲイヲイ)ので紹介します。
Targetの1部だけが含まれていてもFalseとなる仕様ですね。

Public Function InRange(Target As Range, Area As Range) As Boolean
  Dim UArea As Range
  Set UArea = Union(Area, Target)
  InRange = (UArea.Count = Area.Count)
End Function

Debug.Print InRange(Range("B6"), Range("A1:B6"))
Debug.Print InRange(Range("C1"), Range("A1:B6"))
Debug.Print InRange(Range("A1:C1"), Range("A1:B6"))

投稿時間:2005/10/21(Fri) 14:17
投稿者名:ダンボ
URL :
タイトル:
[別解]Targetが特定のレンジ内か判定する
> 実質2行で作れてしまったし、センスも良い(ヲイヲイ)ので紹介します。

先ほど見つけたWebのサンプルページで、こんなのを見つけてしまいました。
関数を作る必要は無いです。ああ、こちらの方がスマートだな。


If Not Intersect(Target, DEFINEDRANGE) Is Nothing Then