| 
    
     |  | こんにちは。 文字列で対応することで課題は解消しました。
 作業列にAD列を使用しています。
 べたべたのコードで醜いですが・・・・。
 
 =前提=
 ◎A列の書式は、文字列にしてください。(マクロではしていません)
 ◎C列の書式も、文字列にしてください。(〃)
 ◎商品番号は、前回と同じように10000、20000、30000・・・としています。
 
 以下コードです。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim myNO As String
 Dim myR As Range
 
 Application.ScreenUpdating = False
 With Target
 If .Count > 1 Then Exit Sub
 If IsEmpty(.Value) Then Exit Sub
 If Not Application.Intersect(Target, Range("C:C")) Is Nothing Then
 Application.EnableEvents = False
 If .row = 2 Then
 myNO = Format(Date, "yymmdd") & "10001"
 .Offset(, -1).Value = 1
 End If
 
 
 For i = .row - 1 To 2 Step -1
 If Cells(i, "C").Value = .Value Then
 .Offset(, -1).Value = Cells(i, "B").Value + 1
 myNO = Format(Date, "yymmdd") & Mid$(Cells(i, "D"), 7) + 1
 Exit For
 Else
 Set myR = Range("D2", Range("D65536").End(xlUp))
 With myR.Offset(, 26)
 .Value = "=right(d2,len(D2)-6)"
 .Value = .Value
 End With
 .Offset(, -1).Value = 1
 myNO = Format(Date, "yymmdd") & _
 (Int(Application.Max(Range("AD:AD")) / 10000) + 1) * 10000 + 1
 
 End If
 Next
 .Offset(, -2).Value = Format(.row - 1, "00000")
 .Offset(, 1).Value = myNO
 Range("AD:AD").ClearContents
 
 Application.EnableEvents = True
 End If
 End With
 Application.ScreenUpdating = True
 
 End Sub
 
 |  |