・案件登録後に入力フォームを自動で空欄にできる
・次の案件入力をすぐ開始できる
・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”)が入力セルと一致しているか確認する
サンプルファイル
このコードを試せるサンプルファイルを配布しています。
関連記事
▶ VBAで案件データを登録するコード(Cells)
▶ VBAでチェックボックスにチェックしたら別シートへ転記するコード【準備中】
▶ VBAで担当者別にデータを集計するコード【準備中】
次回予告
次回は「VBAでチェックボックスにチェックしたら別シートへ転記するコード」を紹介予定です。
コメント