セルをクリックするとユーザーフォームが表示される方法

userformユーザーフォーム

エクセルVBAを使用しているシート上の特定の列のセルをクリックすると指定したユーザーフォームが表示されると便利だと思いませんか?

さらにA列のセルをクリックしたらフォーム1を表示、B列のセルをクリックしたらフォーム2を表示させる複数の場合もやりたいですよね。

SelectionChangeに書き込めば簡単にできますよ!

スポンサーリンク

WorksheetのSelectionChangeに記述する

シート選択

VBA画面でセルをクリックしたらユーザーフォームを表示させたいシートを、Objectsから選択します。

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

オブジェクトの変更

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

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

VBAコードを記載する

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

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

VBAコード記述

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

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

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コードを書くだけで、クリックしたらフォームが表示できるようになりました。