【ExcelVBA】ユーザーフォームの作り方/表示/非表示/アンロード
更新日:2023/12/01
ExcelのVBAで本格的なアプリを作成するならユーザーとのインターフェースを担うユーザーフォームが不可欠です。
今回は、ユーザーフォームの作成方法と、作成したフォームの表示、非表示する方法をお伝えします。
ユーザーフォームの作成方法
ユーザーフォームは、VBエディターで作成します。
VBエディターを開いて、メニュー:挿入から、ユーザーフォームを選択します。
これで、ユーザーフォームがプロジェクト内に作成されます。
ユーザーフォームの表示
ユーザーフォームを表示するときは、VBAコードを記述する必要があります。
ここでは、Excelシート上のボタンが押されたらユーザーフォームが表示されるように、コードを作成します。
Excelシート上で、開発タブ ⇒ 挿入 ⇒ フォームコントロール ⇒ ボタン の順に選択してボタンを設置します。
ボタンを設置するとマクロ登録画面が表示されるので、OKを選択します。
次のコードを入力します。
Sub ボタン5_Click()
UserForm2.Show
End Sub
ユーザーフォームとボタン名前は、実際のものに変更してください。
上記のコードは、ユーザーフォームをモーダル(Modal)で表示します。 モーダルは、Excelの操作をブロックします。 そのため、セルの操作やシート上のボタン操作などができません。 Excelの操作を行いたいときは、ShowModalプロパティの値をFalseに変更します。 または、Showメソッドのmodal引数(第一引数)にvbModelessを指定して、ユーザーフォームをモードレス(Modeless)で表示します。UserForm2.Show vbModeless
Excel起動時にユーザーフォームを表示
Excel起動時にユーザーフォームを表示するときは、ThisWorkbookのOpenイベントにコードを記述します。
ここに、ユーザーフォームのShowメソッドを実行するコードを記述します。
Private Sub Workbook_Open()
UserForm2.Show
End Sub
これで、Excelを終了してから起動するとユーザーフォームが表示されます。
ユーザーフォームの非表示
ユーザーフォームを非表示するときは、hideメソッドを使用します。
今回はユーザーフォームにコマンドボタンを設置して、Captionプロパティを"閉じる"に変更します。
コマンドボタンのClickイベントプロシージャに、次のようにコードを記述します。
Private Sub CommandButton1_Click()
Me.Hide
End Sub
これで、ボタンを押すとユーザーフォームを非表示にすることができます。
なお、他のユーザーフォームやシート上のボタンから非表示にするときは、Meではなくユーザーフォームの名前を指定してください。
Private Sub CommandButton1_Click()
UserForm2.Hide
End Sub
ユーザーフォームのアンロード
ユーザーフォームのアンロードを行うと、メモリ上からユーザーフォームが削除されます。
これにより、テキストボックスに入力した値など、テキストボックスへの変更も削除されます。
ユーザーフォームのアンロードは、Unload関数で行います。
Private Sub CommandButton1_Click()
Unload Me
End Sub
更新日:2023/12/01
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。