対象読者:VBA初心者~実務で使いたい方
レベル:★★☆☆☆(フォーム作成に慣れたい人向け)
はじめに
Excel VBA でデータ入力や操作を「もっと直感的にしたい」と思ったことはありませんか?
そんなときに活躍するのが 「ユーザーフォーム(UserForm)」 です。
テキストボックスやボタンを使って、オリジナルの入力画面を作成できる便利な機能です。
この記事では、ユーザーフォームの基本的な作り方から、実務でよくある活用例までを初心者向けにやさしく解説します!
ユーザーフォームとは?
ユーザーフォーム = 自作できる入力ダイアログ
Excel のワークシートに直接入力する代わりに、
専用の画面(フォーム)からデータをやりとりすることで、操作ミスを減らしたり、使いやすさを大幅に向上させたりできます。
ユーザーフォームの作り方【基本手順】
Step ①:フォームを追加する
Alt + F11
で VBA エディターを開く
リボンの[開発]内にあるVisual BasicからでもVBAエディターを開くことができます!- メニューから「挿入」→「ユーザーフォーム」を選択
UserForm1
が自動生成されます
このUserForm1の枠内にボタンやリストボックスをつけることにより
様々な機能を追加させることができるようになります!
Step ②:コントロールを配置する
- ツールボックスから「テキストボックス」「コマンドボタン」などをドラッグ&ドロップ
- 名前を入力する
TextBox
1 - 登録処理を行う
CommandButton
1
Step ③:ボタンにコードを書く
次にコマンドボタンに機能を追加してみましょう!
上記でドラッグ&ドロップしたCommandButton
1をダブルクリックしてみましょう。
そうすると新しい枠が表示されます。
ここに以下のコードをコピー&ペーストしていれてみてください。
※既にPrivate
とCommandButton
1_Click()End Sub
は入力されている状態で出てきますので
黄マーカー部のみコピペで大丈夫です。
Private Sub CommandButton1_Click()
Sheets("Sheet1").Range("A1").Value = TextBox1.Value
Unload Me ' フォームを閉じる
End Sub
このコードは、今開いているExcelのSheet1のA1セルにテキストボックスに書いた文章を転記させて
転記後にユーザーフォームが自動で閉じる動きをします。
TextBox1 はテキストボックス、
はボタンの内部名です。CommandButton
1
クリックすると A1 セルに入力内容が転記され、フォームが閉じる動きになります。
完成品はこのように動きます。
①テキストボックスに文章を入れる。
※何でも良いです。筆者は明日がまだお休みが来ないことを悲しみを込めて
文字を入れてます。
②CommandButton1を押します。
するとSheet1のA1セルに ”明日は木曜日” と転記されます。
Step ④:フォームを表示するコードを書く
このままの状態だと使用するために毎回VBAエディターを開かないといけなくなるので
その手間を無くすためのボタンを新たに作成しましょう。
[開発]タブ内から挿入➔フォームコントロールのボタンを選択して
ドラッグ&ドロップします。

出てきたボタン1を右クリックし、マクロの登録 を押します。
するとマクロの登録画面が出てくるので、 新規作成(N) を押します。
するとまたVBAエディターへ移動します
先ほどと同じ要領で以下のコードを入力します。
Sub ボタン1_Click()
UserForm1.Show
End Sub
これを実行すれば、ユーザーフォームがポップアップ表示されます。
よく使うコントロール一覧
コントロール | 用途 | プロパティ例 |
---|---|---|
TextBox | テキストの入力欄 | txt名前.Value |
CommandButton | 実行ボタン(クリックで処理) | btn登録.Caption |
ComboBox | 選択式リストボックス | cmb選択.List |
CheckBox | ON/OFFの選択肢 | chk同意.Value |
実務で使えるユーザーフォーム活用例
● 顧客情報の入力フォーム
名前・電話番号・住所などを入力 → Excel に転記
● シフト入力ツール
日付・担当者・時間帯をフォームから登録可能
● 作業記録登録画面
作業項目や開始時間を選択 → シートに時系列で記録
よくある注意点とトラブル回避法
注意点 | 内容 |
---|---|
フォーム名は変更推奨 | UserForm1 のままだと中身がわからなくなりこともあるので自身のわかりやすい様な名称にしましょう。 |
NameとCaptionの違い | Name :コードで使う名前Caption :画面に表示される名前 |
入力チェックも重要 | 空欄チェックやデータ型確認を忘れずに追加しましょう |
発展テクニック(別記事で紹介予定)
- 入力チェック(未入力・数値だけなど)
- ドロップダウンの選択肢を動的に変える方法
- 入力データを一覧に追記して蓄積する方法
- フォームを複数ページ化・タブ切り替え
まとめ
- ユーザーフォームで操作をわかりやすく
- テキストボックスやボタンの配置はドラッグ操作でOK
- VBAと組み合わせて柔軟な処理を実現
業務でよく使う「入力作業」や「登録操作」を、自作フォームでスマートに変えてみませんか?
応用などについてはまた後ほど・・・。
コメント