セルをクリックしてユーザーフォームを表示する3つの方法

Excel VBA イベントプロシージャ

セルをクリックしてユーザーフォームを表示する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つの方法を紹介しました。

他にもエクセルを開いたときにユーザーフォームを表示する方法や、ボタンを作成して表示する方法がありますが、それは次の機会に書きたいと思います。♪(˶ᵔᴗᵔ˵)♪

コメント