Excel VBA 逆引き集 | フォーム高速テンプレ

Excel VBA
スポンサーリンク

フォーム高速テンプレ(効率的なフォーム処理の雛形)

Excel VBAで「フォームを使った処理をもっと速くしたい」「毎回同じようなコードを書くのを省略したい」といった場面では 高速テンプレート(雛形) を用意しておくと便利です。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。


基本の考え方

  • フォーム高速テンプレとは?
    よく使う処理(入力チェック、保存、初期化など)をひとまとめにした「雛形コード」。
  • メリット:
    • 毎回同じコードを書かなくて済む
    • 入力チェックや保存処理を標準化できる
    • 実行速度も安定し、開発効率が上がる

テンプレ1:フォーム初期化(高速クリア)

UserFormに TextBox1~TextBox3 を配置。

Private Sub ClearForm()
    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "TextBox" Then
            ctrl.Value = ""
        End If
    Next ctrl
End Sub
VB
  • ポイント:
    • For Each ctrl In Me.Controls で全コントロールを一括処理。
    • TextBoxだけを判定してクリア。
    • 1行ずつ書かなくても済む。

テンプレ2:入力チェック(必須項目をまとめて判定)

Private Function ValidateForm() As Boolean
    Dim ctrl As Control
    Dim msg As String
    
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "TextBox" Then
            If ctrl.Value = "" Then
                msg = msg & ctrl.Name & " が未入力です" & vbCrLf
            End If
        End If
    Next ctrl
    
    If msg <> "" Then
        MsgBox msg
        ValidateForm = False
    Else
        ValidateForm = True
    End If
End Function
VB
  • ポイント:
    • 全TextBoxを一括チェック。
    • 未入力があればまとめて表示。
    • ValidateForm が True/False を返すので後続処理に使える。

テンプレ3:保存処理(最終行に一括書き込み)

UserFormに TextBox1(氏名)TextBox2(年齢)TextBox3(住所) を配置。

Private Sub SaveData()
    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
  • ポイント:
    • 最終行を自動取得して追記。
    • 保存処理を関数化して再利用可能。

テンプレ4:高速テンプレの組み合わせ(登録ボタン)

Private Sub CommandButton1_Click()
    ' 入力チェック
    If Not ValidateForm() Then Exit Sub
    
    ' 保存処理
    SaveData
    
    ' フォーム初期化
    ClearForm
End Sub
VB
  • ポイント:
    • 「チェック → 保存 → 初期化」の流れを一括。
    • ボタン1つで標準処理が完結。

テンプレ5:ListBoxに即時反映(保存後の確認)

Private Sub SaveData()
    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
    
    ' 保存結果をListBoxに追加
    ListBox1.AddItem TextBox1.Value
    ListBox1.List(ListBox1.ListCount - 1, 1) = TextBox2.Value
    ListBox1.List(ListBox1.ListCount - 1, 2) = TextBox3.Value
    
    MsgBox "データを保存しました!"
End Sub
VB
  • ポイント:
    • 保存と同時にListBoxへ反映。
    • ユーザーが即座に確認できる。

例題で練習

'例1:フォーム初期化(ClearForm)
'例2:入力チェック(ValidateForm)
'例3:保存処理(SaveData)
'例4:登録ボタンで一括処理
'例5:保存結果をListBoxに反映
VB

初心者向けポイント

  • 共通処理を関数化する → ClearForm / ValidateForm / SaveData を用意しておく。
  • For Eachで一括処理 → コントロールをまとめて扱える。
  • 登録ボタンに流れを組み込む → 「チェック → 保存 → 初期化」が定型化。
  • ListBoxで即時確認 → ユーザーに安心感を与える。

👉 この「フォーム高速テンプレ」を覚えておけば、Excel VBAで 入力チェック・保存・初期化を効率的にまとめた高速フォーム処理 を簡単に作成できます。

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