Excel

【ExcelVBA】ユーザーフォームの作り方/表示/非表示/アンロード

更新日:2023/12/01

ExcelのVBAで本格的なアプリを作成するならユーザーとのインターフェースを担うユーザーフォームが不可欠です。
今回は、ユーザーフォームの作成方法と、作成したフォームの表示、非表示する方法をお伝えします。

 

ユーザーフォームの作成方法

ユーザーフォームは、VBエディターで作成します。
VBエディターを開いて、メニュー:挿入から、ユーザーフォームを選択します。

ユーザーフォームを選択

これで、ユーザーフォームがプロジェクト内に作成されます。

作成されたユーザーフォーム

 

ユーザーフォームの表示

ユーザーフォームを表示するときは、VBAコードを記述する必要があります。

ここでは、Excelシート上のボタンが押されたらユーザーフォームが表示されるように、コードを作成します。

Excelシート上で、開発タブ ⇒ 挿入 ⇒ フォームコントロール ⇒ ボタン の順に選択してボタンを設置します。

Excelシート上にボタンを設置

ボタンを設置するとマクロ登録画面が表示されるので、OKを選択します。

マクロ登録画面

次のコードを入力します。

Sub ボタン5_Click()
    UserForm2.Show
End Sub

ユーザーフォームとボタン名前は、実際のものに変更してください。

上記のコードは、ユーザーフォームをモーダル(Modal)で表示します。
モーダルは、Excelの操作をブロックします。
そのため、セルの操作やシート上のボタン操作などができません。

Excelの操作を行いたいときは、ShowModalプロパティの値をFalseに変更します。

ShowModalプロパティの値をFalseに変更

または、Showメソッドのmodal引数(第一引数)にvbModelessを指定して、ユーザーフォームをモードレス(Modeless)で表示します。
UserForm2.Show vbModeless

 

Excel起動時にユーザーフォームを表示

Excel起動時にユーザーフォームを表示するときは、ThisWorkbookのOpenイベントにコードを記述します。

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

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。