Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excel VBA スキルアップコレクション Topics  >     (01) 共通セル範囲を表すRangeオブジェクトの取得

 
(01) 共通セル範囲を表すRangeオブジェクトの取得

 Intersect()関数

 複数のRangeオブジェクトの共通範囲を返す関数を紹介します。
 Intersect() 関数を紹介します。

Intersect(Range1, Rnage2, …)引数のRangeオブジェクトの共通セル範囲をRangeオブジェクトとして返す関数
 例えば、セル"A1:C4"とセル"B2:D10"の共通範囲は"B2:C4"です。Intersect() 関数を使えば、この共通部分のRangeオブジェクトを得ることができます。
 下記サンプルコードが、Intersect( ) 関数のサンプルです。

1行目:  Public Sub Sample_Intersect_01()
2行目:      Dim R As Range
3行目:      Set R = Intersect(Range("A1:C4"), Range("B2:D10"))
4行目:      MsgBox R.Address
5行目:  End Sub
 このサンプルコードを実行すると、2つのRangeオブジェクトの共通部分を指すセルアドレス"B2:C4"がメッセージボックスで表示されます。
 このIntersect( ) 関数は引数に2つのRangeオブジェクトしか渡せないわけではありません。3つ以上のRangeオブジェクトを渡すこともできます。

1行目:  Public Sub Sample_Intersect_02()
2行目:      Dim R As Range
3行目:      ' 3つのRangeオブジェクトを引数に渡す。
4行目:      Set R = Intersect(Range("A1:C4"), Range("B2:D10"), Range("C3:F4"))
5行目:      MsgBox R.Address
6行目:  End Sub
 この関数の活用方法ですが、選択されたセルが規定範囲に入っているか否かを判別する処理などで利用できます。
 以下のサンプルコードを見て下さい。このプロシジャは、ワークシート中の任意のセルをダブルクリックする直前に実行されるイベントプロシジャ「Worksheet_BeforeDoubleClick」です。このプロシジャを"Sheet1"に記載して、セル"B4"をダブルクリックします。ダブルクリックしたセルが規定範囲"A1:D10"に入っていると評価され、メッセージボックスで"In"が表示されます。

1行目:  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
2行目:      ' ダブルクリックしたセルが規定範囲"A1:D10"に、入っているか判別する。
3行目:      If Intersect(Target, Range("A1:D10")) Is Nothing Then
4行目:          MsgBox "Out"
5行目:      Else
6行目:          MsgBox "In"
7行目:      End If
8行目:  End Sub
 [ ダブルクリック前 ]
 [ ダブルクリック後 ]
  
ページの先頭へ