- VBA(Excelマクロ)でユーザーフォームを使ってみたい
- ユーザーフォームってそもそも何なの?
- ユーザーフォームの作り方や使い方を知っておきたい
このようなお悩みをお持ちですか?
この記事を読むことで、下記のことがわかります。
- ユーザーフォームの概要がわかる
- ユーザーフォームの作り方・使い方を知れる
- ユーザーフォームを利用するためのコードを学べる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
VBA(Excelマクロ)のユーザーフォームとは?


ユーザーフォームとは、Excel上にポップアップする独自の入力画面です。
テキストボックスやボタンを配置し、入力内容をシートに反映させることで、入力ミスの防止や作業の効率化が可能になります。
簡単に言うと、入力する側の人をサポートする機能といったところでしょうか。
ユーザーフォームで作成できる代表的なものは以下のとおりです。
- テキストボックス(テキストを自由入力)
- コンボボックス(プルダウンから選択)
- リストボックス(リストから選択/単一・複数選択切り替え可)
- チェックボックス(複数選択可能なチェック)
- オプションボタン(複数選択不可能なチェック)
では、ユーザーフォームの作り方・使い方を見ていきましょう。
VBA(Excelマクロ)ユーザーフォームの作り方・使い方
今回は一番簡単な「テキストボックス」の作り方を例に挙げて、ユーザーフォームの使い方を解説いたします。

上図のように「テキストボックス」に文字を入力し、
ボタンを押すとA1セルに書き込みされるフォームを作ってみましょう。
手順は以下のとおりです。
- ユーザーフォームの呼び出し
- テキストボックスを設置
- コマンドボタンを設置
- コードの記述
- デザイン調整・コード追加
まずはユーザーフォームを呼び出してみましょう。
ユーザーフォームの呼び出し
VBA Project画面から始めます。
上部メニューの「挿入」→「ユーザーフォーム」をクリックします。

ユーザーフォームを呼び出すことができました。

この段階で一旦コードを表示させてみましょう。
画面左「プロジェクト – VBA Project」下の「コードの表示」をクリックしてください。

コードが表示されました。

これは実行ボタンが押された時に行いたい処理を記述します。
フォームが完成してから編集しますので、今は「×」で閉じておいてください。
テキストボックスを設置
次に、テキストボックスを設置していきましょう。
画面左下「ツールボックス」の「コントロール」から、「テキストボックス」を
ユーザーフォームへドラッグ&ドロップします。

テキストボックスが設置されました。

コマンドボタンを設置
テキストボックスと同様に、コマンドボタンを設置しましょう。
「ツールボックス」の「コントロール」から、「コマンドボタン」を
ユーザーフォームへドラッグ&ドロップします。

「コマンドボタン」が設置されました。

これでひとまずユーザーフォームのデザインは完成です。
コードの記述
ではテキストボックス・コマンドボタン・セルA1を連携させるために、コードを記述していきます。
「コードの表示」をクリックしましょう。

コードが表示されたら、「Private Sub CommandButton1_Click()」というのがどこかにあるかと思います。
ここは、コマンドボタンが押された時の処理を書く場所で、今回は「テキストボックスの文字をA1セルに書き込む」という処理にします。
「Private Sub CommandButton1_Click()」の下に
「Range(“A1”).Value = TextBox1.Text」と記述してください。

「TextBox1」は環境によって名前が変わる可能性があります。
テキストボックスの名前を記述してください。
テキストボックスの名前は、すぐ下にあるコード(Private Sub TextBox1_Change・・・)を確認しましょう。
完成しました。
実行ボタンを押して実行してみましょう。

ユーザーフォームが表示されました。

テキストボックスに文字を入力し、コマンドボタン(CommandButton)を押してみます。

テキストボックスに入力した文字が無事A1セルに書き込みされました。

これで完成といってもいいのですが、コマンドボタンほ表示がデフォルトのままなので変更しましょう。
なにより、入力する側の人にとっては何をしたらいいのかわからず不親切なので、説明するためのラベルも追加しましょう。
デザイン調整・コード追加
まずはコマンドボタンの表示を変更しましょう。
コマンドボタンをクリックして選択したら、もう一度クリックすると表示を変更できます。

できるだけわかりやすい表示に変更してください。

ボタンやテキストボックスなどのパーツは、位置を移動させることができます。
パーツの上下左右の四隅にカーソルを合わせると、上下左右の矢印が出る場合があります。
この時にドラッグ&ドロップすることで、位置を変更できます。

今回は下に移動させました。


上にスペースが空きましたので、ここに説明を書いていきましょう。
「ツールボックス」の「コントロール」から、「ラベル」を
ユーザーフォームへドラッグ&ドロップします。


コマンドボタンの時と同様に、表示を変更させます。

表示が折り返されてしまっているので、ラベルを大きくしましょう。
ラベル右下にカーソルを合わせると、「⇔」の矢印が出る場合があります。
この時にドラッグすることで、パーツのサイズを変更できます。


最後に再度実行してみましょう。

わかりやすく変更できました。
画面左下のプロパティから、ボタンの色などを変更することもできます。

- BackColor:ボタンの背景色
- Font:ボタンのフォント
- Fore Color:ボタンの文字色
その他の項目や変更のしかたについては、下記記事をご参考ください。
しかしながら、このままではコマンドボタンを押してもユーザーフォームが閉じられず、出っ放しになります。
なので、コマンドボタンを押したらユーザーフォームを閉じるコードを追加しましょう。
Unload UserForm1
上記VBAコードがユーザーフォームを閉じる記述です。
下記のように、コマンドボタンを押したら実行される処理の最後に記述しましょう。
Private Sub CommandButton1_Click()
Range("A1").Value = TextBox1.Text
Unload UserForm1
End Sub
繰り返しになりますが、「TextBox1」は各自テキストボックスの名前に応じて変更してください。
以上がテキストボックス・コマンドラベルを用いたユーザーフォームの作り方です。
データ保存さえしていれば、Excelを閉じた後でも再開できます。
画面左の「UserForm1」をダブルクリックしてください。


ユーザーフォームが表示されたら再開が可能です。
最後に
VBA(Excelマクロ)のユーザーフォームについて解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!