見出し画像

VBA③|入力フォームを作ってアプリのような使い方をしてみよう

VBAはエクセル等の処理の自動化プログラムとしてマクロを組むこともできますが、GUI(グラフィカルユーザーインターフェース)を作成するためのユーザーフォームの作成ツールも備えています。
これにより、直感的にデータ入力や検索ができるようになります。
初心者でも扱いやすい機能なので、基本から丁寧に解説します。


■ユーザーフォームとは?

ユーザーフォーム(UserForm)は、Excelのセルではなく、ウィンドウ形式で入力・操作ができる画面です。

例:

  • 名前や日付を入力するフォーム

  • ボタンを押して処理を開始する画面

  • 検索フォームなど


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

✏️ Step 1:ユーザーフォームを挿入する

  1. Excelで「開発」タブ →「Visual Basic」をクリック(VBEが開く)

  2. 左側「挿入」→「ユーザーフォーム」を選択

  3. 空白のフォーム(UserForm1)が表示される

この時、ツールボックスも表示されていればOK(表示されないときは「表示→ツールボックス」で出す)


🧩 Step 2:コントロール(部品)を配置する

ツールボックスから以下の部品(コントロール)をフォームにドラッグして配置します:

  • Label(ラベル)・・項目名や説明を表示する

  • TextBox(テキストボックス)・・ユーザーが文字を入力する欄

  • CommandButton(コマンドボタン)・・ボタンとして機能。クリック時に処理を実行

例:簡単な名前入力フォーム
部品上に表示されている文字を以下のように変えてみてください。
部品をクリックして選択後に再度クリックすると入力モードに切り替わります

  • Label1 → 「お名前:」

  • TextBox1 → 入力欄ですのでそのまま空欄

  • CommandButton1 → 「登録」


⚙️ Step 3:コードを書く(イベント処理)

部品を配置したら、その部品に対してマクロを設定することが出来ます。
Step2で例として作った「登録」ボタンをダブルクリックすると「コードウィンドウ」が表示されるので、以下のコードを入力します。

Private Sub CommandButton1_Click()
    MsgBox "こんにちは、" & TextBox1.Value & "さん!"
End Sub
  • TextBox1.Value:入力欄の中身を取得

  • MsgBox:メッセージボックスで表示


🚀 Step 4:ユーザーフォームを表示させるマクロを作成

VBEの「標準モジュール」を挿入して、以下のコードを追加します:

Sub ShowMyForm()
    UserForm1.Show
End Sub

Excelに戻り、「開発」タブ → 「マクロ」から ShowMyForm を実行するとフォームが表示されます。
フォームの「TextBox1」に何か入力してから、「登録」をクリックするとメッセージボックスに「TextBox1」の内容が表示されるはずです。


🎓 応用:フォームからシートにデータを転記する

以下のようにすれば、入力された名前をシート名(Sheet1)のA列に入力されます。
nextRow= の部分で入力済み最終セル行を確認しているので登録ごとに行をずらして記録できます

Private Sub CommandButton1_Click()
    Dim nextRow As Long
    nextRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row + 1
    Sheets("Sheet1").Cells(nextRow, 1).Value = TextBox1.Value
    MsgBox "登録しました!"
    TextBox1.Value = "" ' 入力欄をクリア
End Sub

■まとめ:

ユーザーフォームの基本ステップ

  1. フォームの作成(挿入 → UserForm)

  2. コントロール(Label、TextBox、Buttonなど)配置

  3. イベント(ボタンのクリック)にコードを書く

  4. モジュールでフォームを表示するマクロを書く

  5. 実行して動作確認!


補足ポイント

  • フォームのプロパティ(Name, Caption, BackColorなど)はVBEの「プロパティウィンドウ」で調整可能

  • 入力欄が複数ある場合は、TextBox2, 3などに増やして活用

  • ListBoxやComboBoxも使えば選択式も作れる!


ユーザーフォームはエクセルをデータベース代わりにしてアプリのように使うといった場合に必須になる機能です。
入力フォームからのセルの入力先をあらかじめ指定できるので、入力セル間違えも発生しなくなったり、同じデータを複数シートに同時に書き込んだりなど、データ入力作業の簡素化にも貢献できます。
フォーム画面作成も画面上でパーツを置いていくだけで比較的手軽にできますので、少しずつ作り方や使いやすい入力画面の配置などを覚えてみましょう!

この記事が参考になったら、「スキ」やフォローしてもらえますと嬉しいです。

いいなと思ったら応援しよう!

Rin Sumi Zeal 応援ありがとうございます!