>今回は「カテゴリ別の自動採番」についての質問スレッドのため
そうですか。
なら、登録メニューシートが下のレイアウトだとした場合
<登録メニュー >
行 __________A__________ ___B___
1 自動採番処理
2 支店略称 A
3 カテゴリ分類 02
4 カテゴリ別自動採番→ A020005 ←上の2つが入力されると、
その直後に新しい番号が表示される。
登録メニューのシートモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wsMast As Worksheet
Dim r As Range
Dim aCell As Range
Dim Category As String
Dim maxNo As Long
If Target.CountLarge > 1 Then
Exit Sub
ElseIf Intersect(Target, Range("B2:B3")) Is Nothing Then
Exit Sub
ElseIf Application.CountA(Range("B2:B3")) < 2 Then
Application.EnableEvents = False
Range("B4") = Empty
Application.EnableEvents = True
Exit Sub
End If
Category = Range("B2") & Range("B3")
Set wsMast = Worksheets("備品コード一覧")
Set r = wsMast.Range("A2", wsMast.Cells(Rows.Count, "A").End(xlUp))
For Each aCell In r
If Left(aCell.Value, 3) = Category Then
maxNo = Application.Max(CLng(Right(aCell.Value, 4)), maxNo)
End If
Next
Application.EnableEvents = False
Range("B4") = Category & Format(maxNo + 1, "0000")
Application.EnableEvents = True
End Sub