250101や251201のような、年の下二桁+採番した二桁の月+その月に採番した連番のを取得するケース用です。
もちろん20250101のように”yyyymm”+連番や、25010101のように”yyyymmdd”+連番のようにすることも可能です。
台帳にすでに250401と記載されている場合での4月と5月実施した際の挙動は下記となります。
・今日が2025年4月31日の場合・・・連番は250402となります。
・今日が2025年5月1日の場合・・・連番は250501となります。
今回は先頭にABCを加えた合計8桁の番号で採番しています。
挙動
コード
コードはこちら
Sub 連番取得()
Dim yymm As String, mm As String, 連番 As String, pnt As Range
Dim prg As Long, rng0 As Variant
' 台帳から承認Noを取得設定
Set pnt = ThisWorkbook.ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1)
yymm = Format(CStr(Date), "yymm")
' 新しい月の場合
If yymm <> Mid(pnt.Offset(-1).Value, 4, 4) Then
OKdate = "ABC" & yymm & "01"
pnt = OKdate
' その月の場合
Else
連番 = Format(Val(Mid(pnt.Offset(-1).Value, 8)) + 1, "00")
OKdate = "ABC" & yymm & 連番
pnt = OKdate
End If
End Sub
ポイント機能
・Format関数による連番処理
・年月による連番取得
Format関数による連番処理
エクセルでは「01」のようなゼロから始まる数値は、自動で除外されるようになっています。連番が二桁で1番を示したい場合は01としても一桁で表示れてしまいます。
そんな時に用意されているのが、Format関数です。第二引数に対して"00"と指定することで、桁を2桁にすることができます。これは年月でも使用しており、"yymmdd"のようにすれば取得した年月日データを6桁に調整できます。

年月による連番取得
判定条件として、年と月を現在の年月と比較し、採番をしています。
一つ前にある連番が24から始まる2024年時採番している場合、2025年に採番すると文頭は25年になります。
月についても同様で、一つ前の連番が4月でと採番時も4月であればそのまま、採番時が5月の場合は新たにmmが採番時の月となり、さらに連番に01が追加されます。
yyyymmdd+連番にする場合は、下記のように少し編集するだけで可能です。
Dim yymmdd as String
' 台帳から承認Noを取得設定
Set pnt = Worksheets(1).Range("A" & Rows.Count).End(xlUp).Offset(1)
yymmdd = Format(CStr(Date), "yymmdd")
' 新しい月の場合
If yymm <> Mid(pnt.Offset(-1).Value, 4, 4) Then
OKdate = "ABC" & yymmdd & "01"
pnt = OKdate
' その月の場合
Else
連番= Format(Val(Mid(pnt.Offset(-1).Value, 8)) + 1, "00")
OKdate = "ABC" & yymmdd & 連番
pnt = OKdate
End If