セルが選択されているかどうか判定する
Sheet1のB2が現在の選択範囲に含まれるかを判定します。
実行前に確認
- 違うシートの範囲同士にIntersectを使うとエラーになるため、先にシートを確認しています。
1サンプルコード
Sub Example1158()
Dim ws As Worksheet
Dim r As Range
Set ws = ThisWorkbook.Worksheets("Sheet1")
If TypeName(Selection) <> "Range" Then
MsgBox "セルは選択されていません。"
Exit Sub
End If
If Not Selection.Parent Is ws Then
MsgBox "別のシートが選択されています。"
Exit Sub
End If
Set r = Application.Intersect(Selection, ws.Range("B2"))
MsgBox "B2を含む: " & CStr(Not r Is Nothing)
End Sub表で見る処理のイメージ実行前・実行後のセルを見比べる
Sheet1のA1:C3を選択して実行する例です。
A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。
実行前
| A | B | C | |
|---|---|---|---|
| 1 | 1 | 2 | 3 |
| 2 | 4 | 5 | 6 |
| 3 | 7 | 8 | 9 |
実行後
| A | B | C | |
|---|---|---|---|
| 1 | 1 | 2 | 3 |
| 2 | 4 | 5(注目セル) | 6 |
| 3 | 7 | 8 | 9 |
色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。
セルの値は変わりません。選択範囲A1:C3はB2を含むため、MsgBox:B2を含む: True。別シートの選択では別のメッセージになります。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。Sheet1でB2を含む範囲を選択します。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。
- 3
B2を調べたいセルに変更します。
- 4
マクロ内にカーソルを置いてF5で実行します。選択範囲にB2が含まれればTrueになります。