こんにちは。
今回は Excel VBAのユーザーフォームについて解説します。
Excelでデータ入力をしていると、こんな経験はありませんか?
- 行を間違えて入力してしまう
- 間違えて既存データを上書きする
- 入力ルールが人によってバラバラになる
私の職場でも、Excelのセルに直接入力していた頃はこのようなミスがよく起きていました。
そこで作ったのが VBAのユーザーフォームです。
入力専用の画面を用意することで、入力ミスがかなり減りました。
今回は
- ユーザーフォームとは何か
- 基本的な作り方
- 使いやすいフォームにするコツ
を、実務目線で紹介していきます。
※この記事は作業画像のないシンプルな文章がメインの記事となります。
ユーザーフォームとは?
ユーザーフォームとは、簡単に言うと
Excelの中に作る入力画面
です。
例えばこんなイメージです。
氏名 :[ ]
部署 :[ ]
数量 :[ ] [登録]
セルに直接入力する代わりに、
この画面から入力して ボタンでデータを登録する仕組みを作ります。
ユーザーフォームを使うメリットは主に次の3つです。
① 入力ミスを防げる
入力する場所が決まるため
- 行ズレ
- 上書きミス
などを防ぐことができます。
② 操作が分かりやすくなる
「ここに入力して登録ボタンを押す」
という流れになるため、
Excelに慣れていない人でも使いやすくなります。
③ Excelを簡易システム化できる
ユーザーフォームを使うと
Excelが 簡単な業務システムのような形になります。
VBAユーザーフォームの作り方
ユーザーフォームは次の手順で作成できます。
① VBAエディタを開く
Alt + F11
を押すとVBAエディタ(VBE)が開きます。
② ユーザーフォームを挿入する
メニューから
挿入 → ユーザーフォーム
を選択します。
するとフォームの画面が表示されます。
③ コントロールを配置する
ツールボックスから次のような部品を配置します。
よく使うものはこのあたりです。
| コントロール | 用途 |
|---|---|
| Label | 項目名 |
| TextBox | 入力欄 |
| CommandButton | ボタン |
例えば
- 氏名入力 → TextBox
- 登録ボタン → CommandButton
という形で配置していきます。
フォーム作成で必ずやるべきこと
ユーザーフォームを作るとき、
必ずやっておいた方がいいことがあります。
それは
コントロールの名前を変更すること
です。
初期状態では
CommandButton1
TextBox1
のような名前になっています。
このままだと後でコードを書くときに
「これ何のボタンだっけ?」
となりがちです。
例えば次のように変更しておくと分かりやすくなります。
| コントロール | 名前 |
|---|---|
| 登録ボタン | btnRegister |
| 氏名入力 | txtName |
こうしておくとコードを読んだときに
何の処理か一目で分かるようになります。
使いやすいフォームにするデザインのコツ
ユーザーフォームは少し工夫するだけで
かなり見やすくなります。
個人的に意識しているポイントを紹介します。
① 項目を詰め込みすぎない
フォームは
少し余白を空けた方が見やすくなります。
項目同士を詰めすぎると
入力する側が少しストレスを感じます。
実務で使う際に誤クリックの抑制にもつながります。
② 色は使いすぎない
VBAのフォームは色をつけすぎると
逆に見づらくなることがあります。
おすすめは
- 基本はグレー
- ボタンだけ色を付ける
くらいのシンプルなデザインです。
③ Tabキーで移動できるようにする
ユーザーフォームでは
Tabキーで入力欄を移動できる設定があります。
これは
TabIndex
というプロパティで設定できます。
入力順に番号を並べておくと
キーボードだけでスムーズに入力できます。
マウスを使うことなくさくさく進めるのは有り難いですよね。
VBAは今でも役に立つ?
最近は
- Python
- ノーコードツール
なども増えてきています。
ただ、VBAには大きな強みがあります。
それは
Excelさえあればどの会社でも動くこと
です。
新しいツールを導入できない環境でも
VBAならすぐに業務改善できることが多いです。
【重要】ツールの導入は慎重に!
業務効率化のために新しいツールを試したくなる気持ちはよく分かります。しかし、会社のPCは自分だけのものではありません。不用意なインストールはシステム全体の脆弱性になるリスクがあります。
「これ、便利そう!」と飛びつく前に、まずはシステム部門への申請が必要かどうかを確認しましょう。
トラブルが起きたときの対処法
ユーザーフォームを作っていると
- ボタンを押しても動かない
- 想定と違う動きになる
ということがあります。
そんなときは
MsgBoxで処理を確認する
のがおすすめです。
例えば
MsgBox "ここまで処理が来ました"
のように途中に入れていくと
どこで止まっているか確認できます。
地味ですが、この方法が一番確実です。
まとめ
VBAのユーザーフォームを使うと
- 入力ミスを減らせる
- 操作が分かりやすくなる
- Excelを簡易システム化できる
といったメリットがあります。
最初は少し難しく感じるかもしれませんが、
一度作れるようになると 業務改善の幅がかなり広がります。
ぜひ小さなフォームから作ってみてください。

コメント