|
こんにちは。
文字列で対応することで課題は解消しました。
作業列に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
|
|