エクセルVBAを使用しているシート上の特定の列のセルをクリックすると指定したユーザーフォームが表示されると便利だと思いませんか?
さらにA列のセルをクリックしたらフォーム1を表示、B列のセルをクリックしたらフォーム2を表示させる複数の場合もやりたいですよね。
SelectionChangeに書き込めば簡単にできますよ!
WorksheetのSelectionChangeに記述する
シート選択
VBA画面でセルをクリックしたらユーザーフォームを表示させたいシートを、Objectsから選択します。

オブジェクトの変更
シートを選んだらオブジェクト「General」の▼をクリックして「Worksheet」に変更します。

VBAコードを記載する
Worksheetを選択すると自動的にSelectionChangeに関するSubとEnd Subが記載されますので、この間の部分に「セルをクリックした場合にフォームが表示する」というVBAコードを書き込めば完成です。

VBAコード記述
ここでは、下記のような出納帳でフォームを表示させます。
- 出金額の「H」列のセルをクリックすると出金用のフォーム表示
- 入金額の「I」列のセルをクリックすると入金用のフォーム表示

見出し
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 8 Then
UserForm4.Show
ElseIf Target.Column = 9 Then
UserForm6.Show
End If
End Sub
見出し
- ワークシート上のセルの選択範囲が変更されたら時に実行するマクロ
- もし、8列目(H列)のセルが選択されたら(クリックされたら)
- ユーザーフォーム4を表示する
- そうではなく、もし9列目(I列)のセルが選択されたら(クリックされたら)
- ユーザーフォーム6を表示する
- IFステートメント終了
- マクロ記録終了

とりっぷぼうる
このように、複雑ではなくシンプルなVBAコードを書くだけで、クリックしたらフォームが表示できるようになりました。