右クリックのイベントマクロ
イベントマクロ 07回
右クリックイベントを使ったマクロ
シートにボタンなどを配置することなく、ユーザーフォームを呼び出したいというケースがあります。
今回は対象がSheet1だけなので、Sheet1に Worksheet_BeforeRightClick を記述します。
(サンプルファイルは、こちらから
イベントマクロ07回サンプルデータ)
右クリックイベントを使ったマクロ
1. Visual Basic Editorを起動します。Sheet1を選択してコード画面を表示させて、オブジェクトボックスをクリックします。するとデフォルトのイベントマクロの型が入力されますが、使うのは、BeforeRightClick なので、プロシージャボックスからBeforeRightClick を選択してください。最初に入力された規定のコードは削除して大丈夫です。
2. ユーザーフォームは以前フォームシリーズで使ったフォームを転用しています。ユーザーフォームの名前は、デフォルトですと、UserForm1となりますが、変更してudfrmとしています。右クリック後にセルが編集状態になる必要がないので、最初に Cancel = True と記述します。
Private Sub Worksheet_BeforeRightClick( _ ByVal Target As Range, Cancel As Boolean) Cancel = True udfrm.Show 'udfrmという名前のユーザーフォームを表示する End Sub
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セルを右クリックします。他のセルでは表示されません。
Range("F2")を右クリックした時にだけ、指定したユーザーフォームが表示されるイベントマクロです。