右クリックのイベントマクロ UserFormを表示するWorksheet_BeforeRightClick

右クリックのイベントマクロ

右クリックでフォームを表示するイベントマクロ
右クリックのイベントマクロ

リンクユニット


イベントマクロ 07回

右クリックイベントを使ったマクロ

シートにボタンなどを配置することなく、ユーザーフォームを呼び出したいというケースがあります。
今回は対象がSheet1だけなので、Sheet1に Worksheet_BeforeRightClick を記述します。


(サンプルファイルは、こちらから イベントマクロ07回サンプルデータ

右クリックイベントを使ったマクロ

1. Visual Basic Editorを起動します。Sheet1を選択してコード画面を表示させて、オブジェクトボックスをクリックします。するとデフォルトのイベントマクロの型が入力されますが、使うのは、BeforeRightClick なので、プロシージャボックスからBeforeRightClick を選択してください。最初に入力された規定のコードは削除して大丈夫です。


右クリックのイベントマクロ1 border=0

2. ユーザーフォームは以前フォームシリーズで使ったフォームを転用しています。ユーザーフォームの名前は、デフォルトですと、UserForm1となりますが、変更してudfrmとしています。右クリック後にセルが編集状態になる必要がないので、最初に  Cancel = True と記述します。


Private Sub Worksheet_BeforeRightClick( _
            ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    udfrm.Show 'udfrmという名前のユーザーフォームを表示する
End Sub

右クリックのイベントマクロ2 border=0

3. 指定したセルを右クリックした時だけイベントを実行させるには、IF文を使って、 If Target = Range("F2") Then  というようにセルを限定します。

Private Sub Worksheet_BeforeRightClick( _
            ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    If Target = Range("F2") Then
    udfrm.Show
    End If
End Sub

ユーザーフォームを表示する時は、F2セルを右クリックします。他のセルでは表示されません。


右クリックのイベントマクロ3 border=0

Range("F2")を右クリックした時にだけ、指定したユーザーフォームが表示されるイベントマクロです。