教えて!ExcelVBA!

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

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

構文

構文は以下の通りです。

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    ' ここに実行したいコードを記述します
End Sub

解説

Workbook_SheetBeforeRightClickは、ブック内のシート上で右クリックが行われる直前に実行されるイベントです。Shは、右クリックされたシートを表します。Targetは、右クリックされたセルの範囲を表します。CancelにTrueに設定すると、右クリックメニューが表示されなくなります。

プログラミング例

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

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    ' 右クリックされたシートの名前を表示します
    MsgBox "シート名: " & Sh.Name
    ' 右クリックされたセルのアドレスを表示します
    MsgBox "セルのアドレス: " & Target.Address
    ' 右クリックメニューを表示しないようにします
    Cancel = True
End Sub

上記のプログラムは、任意のシートで右クリックが行われると、以下の3つの動作を行います。
・右クリックされたシートの名前をメッセージボックスに表示します。
・右クリックされたセルのアドレスをメッセージボックスに表示します。
・右クリックメニューを表示しないようにします。

まとめ

Workbook_SheetBeforeRightClickイベントは、右クリックが行われる直前に処理を実行します。このイベントを使うことで、特定のシートやセルで右クリックが行われた際の動作をカスタマイズできます。CancelをTrueに設定することで、右クリックメニューを無効にすることができます。