Excel VBA 逆引き集 | 登録フォーム

Excel VBA
スポンサーリンク

登録フォームの基本

Excel VBAで「新しいデータを入力してシートに登録したい」「ユーザーがフォームから簡単に追加できるようにしたい」といった場面では 登録フォーム を作ると便利です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • 登録フォームとは?
    UserFormに入力欄(TextBoxやComboBoxなど)と「登録ボタン」を配置し、入力した内容をシートに書き込む仕組み。
  • 用途:
    • 顧客情報の新規登録
    • 商品マスタの追加
    • 日報や申請データの入力
  • 流れ:
    1. UserFormに入力欄を配置(例:名前、年齢、住所)。
    2. 「登録ボタン」を押すと最終行の下に新しいデータを追加。
    3. 入力チェック(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で 新しいデータを簡単に追加できる便利な入力フォーム を作成できます。

タイトルとURLをコピーしました