VBAで案件入力フォームのデータをクリアするコード|入力フォーム初期化を自動化する方法

・案件登録後に入力フォームを自動で空欄にできる
・次の案件入力をすぐ開始できる
・VBA初心者でもコピペで利用可能

このコードでできること

・案件データをデータベースへ登録
・案件IDを自動採番
・登録後に入力フォームを自動クリア

この設定をしておくと、データを別ファイルに転記すると自動的に入力ホームは空欄になるので、次のデータを入れる時に前のデータを削除する必要がなくなります。

サンプルファイル

Excel VBAサンプルは、OneDriveの配布フォルダーからダウンロードします。
配布フォルダーを開き、必要なファイルまたはフォルダーを選択してください。
すべてのファイルをダウンロードする必要はありません。
必要に応じてファイルのダウンロードをしてください。

VBAコードのサンプルファイルを利用する方法
02.登録後に入力フォームを自動クリアする

VBAコード

Sub 案件登録()

    Dim wsForm As Worksheet
    Dim wsDB As Worksheet

    Dim lastRow As Long
    Dim nextRow As Long
    Dim caseId As String

    Set wsForm = Worksheets("案件入力フォーム")
    Set wsDB = Worksheets("案件データベース")

    '最終行取得
    lastRow = wsDB.Cells(wsDB.Rows.Count, "A").End(xlUp).Row

    '登録行
    nextRow = lastRow + 1

    '案件ID生成(A00001形式)
    caseId = "A" & Format(nextRow - 1, "00000")

    'データ転記
    wsDB.Cells(nextRow, 1).Value = Format(Date, "yyyy/mm/dd")
    wsDB.Cells(nextRow, 2).Value = caseId
    wsDB.Cells(nextRow, 3).Value = wsForm.Range("C2").Value
    wsDB.Cells(nextRow, 4).Value = wsForm.Range("C3").Value
    wsDB.Cells(nextRow, 5).Value = wsForm.Range("C4").Value
    wsDB.Cells(nextRow, 6).Value = Format(wsForm.Range("C5").Value, "yyyy/mm/dd")
    wsDB.Cells(nextRow, 7).Value = wsForm.Range("C6").Value
    wsDB.Cells(nextRow, 8).Value = wsForm.Range("C7").Value
    wsDB.Cells(nextRow, 9).Value = wsForm.Range("C8").Value

    '入力フォームのクリア
    wsForm.Range("C2:C8").ClearContents

    MsgBox "案件を登録しました。", _
           vbInformation, "登録完了"

End Sub

カスタマイズ例

パターン①

入力項目を増やす場合

wsDB.Cells(nextRow, 10).Value = wsForm.Range("C9").Value

パターン②

入力フォームのクリア範囲を広げる場合

wsForm.Range("C2:C20").ClearContents

よくあるエラー

実行時エラー「インデックスが有効範囲にありません」

対処法
・シート名が一致しているか確認する
・案件入力フォーム、案件データベースの名称を確認する

フォームがクリアされない

対処法
・ClearContentsの記述位置を確認する
・Range(“C2:C8”)が入力セルと一致しているか確認する

関連記事

▶ 前の記事:VBAで案件データを登録するコード

▶ 次の記事:VBAで実務用チェックボックスを作る方法

プロジェクトトップページへ戻る

コメント