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

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

このコードでできること

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

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”)が入力セルと一致しているか確認する

サンプルファイル

このコードを試せるサンプルファイルを配布しています。

サンプルファイルをダウンロード(.zip)

関連記事

▶ VBAで案件データを登録するコード(Cells)

▶ VBAでチェックボックスにチェックしたら別シートへ転記するコード【準備中】

▶ VBAで担当者別にデータを集計するコード【準備中】

次回予告

次回は「VBAでチェックボックスにチェックしたら別シートへ転記するコード」を紹介予定です。

コメント