・案件登録後に入力フォームを自動で空欄にできる
・次の案件入力をすぐ開始できる
・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で実務用チェックボックスを作る方法

コメント