Workbook_SheetBeforeRightClick
イベントマクロ 06回
ワークシートを右クリックしたときに処理するイベントマクロ
このコードでは、既定の右クリックの操作の前に、ワークシートを右クリックしたときに発生します。
規定の右クリックメニューを表示させる前に、他の処理を行うわけです。
(サンプルファイルは、こちらから
イベントマクロ06回サンプルデータ)
ブックのシートで右クリックを禁止する
1. ブック内のシートで規定の右クリックの操作を無効にします。コードはThis workBookに記述します。
コードが記述されているブック内のシートで右クリックしてもキャンセルされて何も起りません。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, _ ByVal Target As Range, Cancel As Boolean) Cancel = True End Sub
2. こちらは、メッセージを表示する例です。右クリックできないと「あれ?」と驚くだろうから、メッセージボックスで右クリックが使えませんと表示する。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True MsgBox ("このワークブックでは右クリックメニューは使えません"), _ vbInformation, "右クリックメニュー" End Sub

特定シートだけ右クリック禁止
3. 今度は、シートを限定して右クリック禁止にしましょう。シートが4枚あるので、Sheet1とSheet3を右クリック禁止にします。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Sheet1" Or Sh.Name = "Sheet3" Then Cancel = True End If End Sub
このコードですと、右クリックしても指定シートでは、何もおこりません。メッセージを表示した方が親切ですね。

下図は、コードにメッセージを表示するようにしました。

右クリックしたセルのアドレスを表示する
4. こんどは、右クリックしたシートのシート名とアドレスを表示することにします。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox "右クリックしたのは、" & vbCrLf & _ "シート名:" & Sh.Name & vbCrLf & _ "セル位置:" & Target.Address(0, 0) & " です。" End Sub
