教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでシートが右クリックされた時に処理を実行する方法

構文

構文は以下の通りです。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    ' ここに右クリック時の処理を記述
End Sub

解説

Worksheet_BeforeRightClick は、シートを右クリックした時に実行されるイベントです。Targetには、ユーザーが右クリックしたセル範囲が格納され、この情報を使ってどのセルがクリックされたかを知ることができます。Cancelは、通常Falseが設定されていますが、Trueを設定すると右クリック時に処理が実行されません。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A1:C3")) Is Nothing Then
        MsgBox "この範囲で右クリックされました"
        Cancel = True ' 右クリックメニューを表示しない
    End If
End Sub

上記のプログラムは、A1からC3のセルが右クリックされると、「この範囲で右クリックされました」のメッセージが表示されます。

まとめ

Worksheet_BeforeRightClickイベントは、シートを右クリックしたときに処理を実行することができます。