- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
2#
發表於 2015-6-13 08:29
| 只看該作者
如何讓編號自動產生
詢求各位大大幫忙
sheau-lan 發表於 2015-6-11 08:44 
你的範例檔有些地方邏輯性不一致,
這裡只能先依我理解的規則來試做.
1.每個 Range 間固定只留 4 的倍數的空白列,
超過且未達 4 的倍數的空白列無條件刪除,
每多 4 個空白列 規格的序號加 1
2.只考慮變更 品號 所在列自動編號 規格-英文字,
對於其下資料並未做重新編號的處理.- Private Sub Worksheet_Change(ByVal Target As Range)
- On Error GoTo 99
- Dim TG As Range
- With Target
- If .Row >= 3 And .Column = 1 Then
- If .Value = "" Then
- 98: .Offset(0, 2) = ""
- .Offset(0, 3) = ""
- .Offset(0, 5) = ""
- .Offset(0, 6) = ""
-
- Else: Set TG = Sheet7.[H3:H9999].Find("*" & .Value & "*", , , xlWhole)
- If TG Is Nothing Then GoTo 98
- .Offset(0, 2) = TG.Offset(0, -6).Value
- TG2 = .Offset(0, 2).Value
- .Offset(0, 3) = TG.Offset(0, -3).Value
- .Offset(0, 9) = TG.Offset(0, -2).Value
- .Offset(0, 5) = Application.VLookup(TG2, Sheet15.[A4:H9999], 8, False)
- If IsError(.Offset(0, 5).Value) Then .Offset(0, 5) = ""
- .Offset(0, 6) = TG.Offset(0, 1).Value
- Dim N%, N1%, S1$, C%, S2$
- N = 0
- Set TG = .Offset(-1, 7)
- While TG = ""
- Set TG = TG.Offset(-1)
- N = N + 1
- Wend
-
- N1 = Mid(TG, 2, Len(TG) - 3)
- S1 = Right(TG, 1)
-
- C = 0
- S2 = TG
- While TG = S2
- Set TG = TG.Offset(-1)
- C = C + 1
- Wend
-
- If N > 3 Then
- N1 = N1 + Int((N - 3) / 4) + 1
- S1 = "A"
- With Range(.Offset(0), .Offset(, 9)).Borders(xlEdgeTop)
- .LineStyle = xlContinuous
- .ColorIndex = 37
- .Weight = xlHairline
- End With
- N = N - (Int(N / 4) * 4)
- Else
- If C > 3 Then S1 = Chr(Asc(S1) + 1)
- End If
- Application.EnableEvents = False
- .Offset(, 7) = "M" & N1 & "-" & S1
- If N > 0 And N < 4 Then
- Range(Rows(.Row - 1), Rows(.Row - N)).Delete
- .Offset(1).Select
- End If
- Application.EnableEvents = True
- End If
- End If
- End With
- 99
- End Sub
複製代碼 |
|