関数・メソッド

右クリックした場合に処理を実行する【BeforeRightClick】【ExcelVBA】

構文

Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Target・・・ 右クリックしたセル位置をRange形式で取得
Cancel・・・False(右クリック処理を実行)【初期値】
・・・True(右クリック処理を実行しない※キャンセル)
WorkSheet内のセルを右クリックした際に起動します。

Worksheet_BeforeRightClickイベントのサンプルコード

標準モジュールではなく、WorkSheetモジュール(Microsoft_Excel_Objects_Sheet1_(Sheet1)等)に記載します。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    
    '■どこのセルでも良い場合
    MsgBox "右クリックされました"

    '■特定セルで起動する場合(セルE10)
    If Target.Address = "$E$10" Then
        MsgBox "特定セル"
    End If
    '■特定セル範囲で起動する場合(セルのC4~E5)
    If Not Intersect(Target, Range("C4:E5")) Is Nothing Then
        MsgBox "特定セル範囲"
    End If
    
    '■特定列で起動する場合(B列(2列目)の場合)
    If Target.Column = 2 Then
        MsgBox "特定列"
    End If
    
    '■特定行で起動する場合(1行目の場合)
    If Target.Row = 1 Then
        MsgBox "特定行"
    End If
    
    '■Trueにすると右クリック(右クリックメニュ―表示)はキャンセルされます
    '■Falseにすると右クリック(クリックメニュ―表示)になります
    Cancel = False
End Sub

注意点

  • 標準モジュール(Module1等)に記載しても動作しません。
  • 該当の処理をしたいWorkSheetモジュールに記載しましょう。
  • 例ではMsgboxで表示していますが、こちらをよく使うのは別プロシージャの呼び出しです。
    Callを使った他プロシージャの呼出、引数付きのSubプロシージャやFunctionプロシージャなどを呼び出しするケースが大半でしょう。

関連記事

特定のセル範囲で値が変更された時に処理を実行【ExcelVBA】
特定のセルがダブルクリックされた場合に処理を実行する【BeforeDoubleClick】【ExcelVBA】

コメント

タイトルとURLをコピーしました