登録フォームの基本
Excel VBAで「新しいデータを入力してシートに登録したい」「ユーザーがフォームから簡単に追加できるようにしたい」といった場面では 登録フォーム を作ると便利です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- 登録フォームとは?
UserFormに入力欄(TextBoxやComboBoxなど)と「登録ボタン」を配置し、入力した内容をシートに書き込む仕組み。 - 用途:
- 顧客情報の新規登録
- 商品マスタの追加
- 日報や申請データの入力
- 流れ:
- UserFormに入力欄を配置(例:名前、年齢、住所)。
- 「登録ボタン」を押すと最終行の下に新しいデータを追加。
- 入力チェック(Validate処理)を組み合わせると安心。
テンプレ1:基本的な登録フォーム
UserFormに TextBox1(名前)、TextBox2(年齢)、TextBox3(住所)、CommandButton1(登録ボタン) を配置。
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long
' 最終行を取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 新しい行にデータを登録
ws.Cells(lastRow + 1, 1).Value = TextBox1.Value ' 名前
ws.Cells(lastRow + 1, 2).Value = TextBox2.Value ' 年齢
ws.Cells(lastRow + 1, 3).Value = TextBox3.Value ' 住所
MsgBox "データを登録しました!"
' 入力欄をクリア
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
End Sub
VB- ポイント:
End(xlUp)で最終行を取得。- 新しい行に入力内容を書き込む。
- 登録後に入力欄をクリアして次の入力に備える。
テンプレ2:入力チェックを追加(Validate処理)
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Then
MsgBox "名前を入力してください"
Exit Sub
End If
If Not IsNumeric(TextBox2.Value) Then
MsgBox "年齢は数値で入力してください"
Exit Sub
End If
' 登録処理
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Cells(lastRow + 1, 1).Value = TextBox1.Value
ws.Cells(lastRow + 1, 2).Value = TextBox2.Value
ws.Cells(lastRow + 1, 3).Value = TextBox3.Value
MsgBox "データを登録しました!"
End Sub
VB- ポイント:
- 空欄チェックや数値チェックを追加。
- 不正な入力を防げる。
テンプレ3:登録時に日付やIDを自動付与
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' IDは行番号を利用
ws.Cells(lastRow + 1, 1).Value = "ID-" & lastRow + 1
ws.Cells(lastRow + 1, 2).Value = TextBox1.Value ' 名前
ws.Cells(lastRow + 1, 3).Value = TextBox2.Value ' 年齢
ws.Cells(lastRow + 1, 4).Value = TextBox3.Value ' 住所
ws.Cells(lastRow + 1, 5).Value = Date ' 登録日
MsgBox "データを登録しました!"
End Sub
VB- ポイント:
- 自動でIDや日付を付与。
- データベース的な管理が可能。
テンプレ4:登録後に確認メッセージを出す
Private Sub CommandButton1_Click()
Dim ans As VbMsgBoxResult
ans = MsgBox("この内容で登録しますか?", vbYesNo)
If ans = vbYes Then
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
ws.Cells(lastRow + 1, 1).Value = TextBox1.Value
ws.Cells(lastRow + 1, 2).Value = TextBox2.Value
ws.Cells(lastRow + 1, 3).Value = TextBox3.Value
MsgBox "データを登録しました!"
Else
MsgBox "登録をキャンセルしました"
End If
End Sub
VB- ポイント:
- 登録前に確認を取る。
- 誤操作を防げる。
例題で練習
'例1:基本的な登録フォーム
'例2:入力チェックを追加
'例3:IDや日付を自動付与
'例4:登録前に確認メッセージ
VB初心者向けポイント
- 最終行を取得して追加 →
Cells(Rows.Count, "A").End(xlUp).Rowが定番。 - Validate処理を組み合わせる → 入力ミスを防ぐ。
- IDや日付を自動付与 → データ管理が楽になる。
- 確認メッセージを入れる → 誤操作防止。
- 入力欄をクリアする工夫 → 次の入力がスムーズ。
👉 この「登録フォームテンプレ」を覚えておけば、Excel VBAで 新しいデータを簡単に追加できる便利な入力フォーム を作成できます。
