![見出し画像](https://assets.st-note.com/production/uploads/images/85737119/rectangle_large_type_2_77638395785e72328a5a3ab6d5f76440.png?width=800)
Excelマクロでユーザーフレンドリーなフォームを表示!
前回まで、VBA(マクロ)について下記の記事を投稿してきました。
・Excel で マクロ(VBA)を書く
・Excelマクロで変数を使って計算する
・Excelマクロで変数をシートに保存する
今回は、ユーザーフォームの表示の仕方について説明します。
いままでとは違い、ユーザーフォームでは自由にフォーム画面を作成できます。
![](https://assets.st-note.com/img/1661684468401-uvwBRbNDN2.png?width=800)
ユーザーフォームを作成する
業務アプリを作るには、いろいろなフォーム画面を開いたり閉じたりする必要があります。ここではフォーム画面の作り方について説明をします。
[新規]ブックを開いてください。
![](https://assets.st-note.com/img/1661763421447-NB27xBBhWc.png)
[開発]タブの[Visual Basic]を押して、VBE画面に切り替えます。
![](https://assets.st-note.com/img/1661762906408-v6Jz62UWVE.png?width=800)
[挿入]の[ユーザーフォーム]を押してください。
![](https://assets.st-note.com/img/1661763079984-dYKL1Xykvw.png)
ユーザーフォームが、挿入されます。
ユーザーフォームの名前は、[UserForm1]になっています。
![](https://assets.st-note.com/img/1661763194269-4VW197AwMC.png?width=800)
[挿入]-[標準モジュール]を押して、マクロを書く領域(標準モジュール)を作成します。
![](https://assets.st-note.com/img/1661763535905-aQ4lUVg9ca.png)
標準モジュール(Module1)が、できたら[Sub フォーム1表示]と入力して[Enter]を押してください。
![](https://assets.st-note.com/img/1661763728509-eD40pGJ8I1.png?width=800)
[フォーム1表示]というマクロを記述します。
Sub フォーム1表示()
UserForm1.Show
End Sub
マクロには下記のように書きます。
UserForm1.Show
マクロを実行します。
![](https://assets.st-note.com/img/1662170365535-P9X5s6d1CQ.png)
マクロを実行すると UserForm1 が表示されます。
![](https://assets.st-note.com/img/1662170576007-I3zl6lmL5Z.png)
ユーザーフォームをデザインする
表示した UserForm1 は、閉じてください。
[ツールボックス]アイコンを押してください。
[ツールボックス]ウィンドウが表示されます。
![](https://assets.st-note.com/img/1662171096233-tJDlVwEZLt.png)
ラベルを挿入する
ツールボックスの[ラベル]アイコンをクリックして、フォームをクリックするとラベルができます。
![](https://assets.st-note.com/img/1662171439745-vhuWfq4PhO.png)
左下の[Caption]プロパティを[ユーザーフォーム(1)]に編集します。
![](https://assets.st-note.com/img/1662171660851-b52bXTnH14.png)
マクロを実行すると
![](https://assets.st-note.com/img/1662172019626-EgCCtcE1ud.png)
ラベルを追加した UserForm1 が、表示されます。
![](https://assets.st-note.com/img/1662172076141-ZP32HDLEdi.png)
コマンドボタンを挿入する
ツールボックスの[コマンドボタン]アイコンをクリックして、[コマンドボタン]を挿入します。
![](https://assets.st-note.com/img/1662172514193-BK6qwBF3FB.png)
左下の[Caption]プロパティを[フォーム(2)を表示]に編集します。
![](https://assets.st-note.com/img/1662172763942-OIDNWlPqfk.png)
ユーザーフォーム2を追加する
[挿入]ー[ユーザーフォーム]と押して UserForm2 を挿入します。
ツールボックスを表示してください。
![](https://assets.st-note.com/img/1662174545740-oIxSA66oGQ.png)
UserForm1 の時と同様に、ラベルを挿入します。
ラベルの Cpaption プロパティを[ユーザーフォーム(2)]に変更します。
ボタンを押してフォーム2を表示する
UserForm1 のコマンドボタンを押すと UserForm2 が表示されるように設定します。
プロジェクトエクスプローラーの UserForm1 をダブルクリックして、UserForm1 を表示します。
![](https://assets.st-note.com/img/1662353763359-4pDtBwgtjA.png?width=800)
コマンドボタン[フォーム(2)を表示]をダブルクリックしてください。
CommandButton1_Click のマクロモジュールができます。
![](https://assets.st-note.com/img/1662353943252-shBftwqowO.png?width=800)
ここに UserForm2 を表示する命令を書きます。
UserForm2.SHow と書いてください。
Private Sub CommandButton1_Click()
UserForm2.Show
End Sub
マクロを実行して、 UserForm1 を表示してください。
![](https://assets.st-note.com/img/1662354228907-XKVVN47IKx.png)
UserForm1 が表示されたら、[フォーム(2)を表示]ボタンを押します。
![](https://assets.st-note.com/img/1662354285702-jYxyMqcGYQ.png)
UserForm2 が、表示されると思います。
![](https://assets.st-note.com/img/1662354551644-SwULGyg9yg.png)
UserForm2 をずらすと UserForm1 も、表示されたままだということがわかります。
UserForm1 を閉じようとしても、UserForm2 を閉じなければ UserFrom1 は閉じれないことを確認してください。
![](https://assets.st-note.com/img/1662354748905-8teTlRel7X.png)
UserForm1 が閉じれないのは、[ShowModal]プロパティが[True]に設定されているからです。
UserForm1 を表示して、[ShowModal]プロパティを[False]に設定してみてください。
プロジェクトエクスプローラーの UserForm1 をクリックして、上の[オブジェクトの表示]を押してください。
フォームが表示されたら、左下の[ShowModal]プロパティを[False]にします。
![](https://assets.st-note.com/img/1662357976125-oMTP9HvMxF.png?width=800)
UserForm1 と UserForm2 を表示して、UserForm1 の[×]を押すと、UserForm1 が閉じられると思います。
![](https://assets.st-note.com/img/1662359185839-QEwHGiU3dW.png)
[ShowModal]プロパティは、フォームを閉じることなく他の処理を実行する設定です。フォーム処理では大変重要な要素になりますので、逐次説明いたします。
[コミュニティのご案内]
ExcelやAccessで困ったときは、コミュニティでお問い合わせください。
Excelを業務で使うコミュニティ(Discord)
![](https://assets.st-note.com/img/1712651468730-1Fsb7Oicu2.png?width=800)