セルをクリックしてユーザーフォームを表示する3つの方法を紹介します。
エクセルVBAを習い始めた頃、参考書を見ながらユーザーフォームを作成した後に、さて「フォームの表示の方法はどうしようか?」と悩んだ経験があったので、今回はセルをクリックするだけで簡単にユーザーフォームを表示できる方法を3つ紹介したいと思います。
セルを「ダブルクリック」したときにユーザーフォームを表示する方法

まず簡単なユーザーフォームを作成します、エクセルの「開発」タブ →「Visual Basic」でVBE(Visual Basic Editor)の画面を表示して「挿入」メニュー → 「ユーザーフォーム」でUserForm1を作成します。

VBAProjectの「Sheet1」をダブルクリックしてSheet1のコードウィンドウを表示し次のコードをコピーして貼り付けます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'セルをダブルクリックしたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then 'ダブルクリックしたセルがA1であれば。
Cancel = True 'セルが編集モードになるのをキャンセルする。
UserForm1.Show 'ユーザーフォームを表示する。
End If
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'セルを右クリックしたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then '右クリックしたセルがA1であれば。
Cancel = True '右クリックメニューの表示をキャンセルする。
End If
End Sub

エクセルのSheet1を表示してA1セルを「ダブルクリック」するとユーザーフォームが表示されます。
セルを「右クリック」したときにユーザーフォームを表示する方法
先ほどSheet1に張り付けたコードは削除しておきます。
VBAProjectの「Sheet1」のコードウィンドウに次のコードをコピーして貼り付け、エクセルのSheet1を表示してA1セルを「右クリック」するとユーザーフォームが表示されます。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'セルを右クリックしたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then '右クリックしたセルがA1であれば。
Cancel = True '右クリックメニューの表示をキャンセルする
UserForm1.Show 'ユーザーフォームを表示する
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'セルをダブルクリックしたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then 'ダブルクリックしたセルがA1であれば。
Cancel = True 'セルが編集モードになるのをキャンセルする。
End If
End Sub
セルを「クリック」したときにユーザーフォームを表示する方法
先ほどSheet1に張り付けたコードは削除しておきます。
VBAProjectの「Sheet1」のコードウィンドウに次のコードをコピーして貼り付け、エクセルのSheet1を表示してA2セルを選択し、A1セルを「クリック」するとユーザーフォームが表示されます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'セルの選択範囲が変更されたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then '変更されたセルがA1であれば。
Application.EnableEvents = False
UserForm1.Show 'ユーザーフォームを表示する。
Range("A2").Select
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'セルをダブルクリックしたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then 'ダブルクリックしたセルがA1であれば。
Cancel = True 'セルが編集モードになるのをキャンセルする。
End If
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'セルを右クリックしたとき発生するイベント。
If Not Intersect(Target, Range("A1")) Is Nothing Then '右クリックしたセルがA1であれば。
Cancel = True '右クリックメニューの表示をキャンセルする。
End If
End Sub
セルをクリックしてユーザーフォームの表示する3つの方法を紹介しました。
他にもエクセルを開いたときにユーザーフォームを表示する方法や、ボタンを作成して表示する方法がありますが、それは次の機会に書きたいと思います。♪(˶ᵔᴗᵔ˵)♪
コメント