hiroton
2020/09/23 (水) 10:02:54
7416f@f966d
後から見直したらもっといいコードがあったんじゃないかなと思うことはよくあること。なので
Dim lastID As String
Dim newNo As Long
lastID = Nz(DMax("発行番号", "発行簿", "コード='" & Me!コード & "' AND 区分='" & Me!区分 & "'"))
If lastID = "" Then
'//新規(条件グループの連番が見つからなかった時)なので初期値を設定する
If Me!区分 = "後" Then
newNo = 501
Else
newNo = 1
End If
Else
'//連番部分を取り出して1増やす
newNo = Val(Right(lastID, 3)) + 1
End If
Me!発行番号 = Me!コード & "-" & Me!区分 & "-" & Format(newNo, "000")
先のコードよりわかりやすくなってると思います
区分で設定を変えたいということでそこだけ条件分岐にしましたが、元々の「連番+1の処理」をそのまま残して初期値側を「後でプラス1されるからマイナス1しておく」ように弄ったところも条件分岐させてあげたほうが直感的に書けますね
ついでにlastID
もAs String
指定できるので変な使い方ができないよう(バグのもとにならないよう)に制限できるのも良い点かなと
余談
変数名も「lastNo」と「newNo」だとそっくりなのに中身別物じゃないかってなるので手を加えてみました
通報 ...