指定したセルをクリックするとVBAのユーザーフォームが表示される方法

userform

ワークシート上のコマンドボタンを配置して、クリックするとユーザーフォームを表示させる方法はよく使われていますが、セルをクリックするだけでユーザーフォームが表示できることをご存じでしたか?

SelectionChangeに書き込めば、セルの場所に応じて表示するユーザーフォームも選べたらとても便利で簡単ですよ。

目次

セルをクリックしてフォーム表示

セルをクリックしてユーザーフォームを表示させるには、どのシートで操作をするかを決めなくてはいけないのでVBA画面上で、下記の図のように赤枠部分からObjectsからシートを選択します。

セルをクリックしたらフォーム表示
シートを選択

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

セルをクリックしたらフォーム表示2

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

セルをクリックしたらフォーム表示

ここでは、下記のような出納帳でフォームを表示させます。

  • 出金額の「H」列のセルをクリックすると出金用のフォーム表示
  • 入金額の「I」列のセルをクリックすると入金用のフォーム表示
セルをクリックしたらフォーム表示4
セルクリックでフォーム表示するVBA

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

解説
  1. ワークシート上のセルの選択範囲が変更されたら時に実行するマクロを実行する
  2. もし、8列目(H列)のセルが選択されたら(クリックされたら)
  3. ユーザーフォーム4を表示する
  4. そうではなく、もし9列目(I列)のセルが選択されたら(クリックされたら)
  5. ユーザーフォーム6を表示する
  6. IFステートメント終了
  7. マクロ記録終了

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

目次