返回列表 上一主題 發帖

[發問] 如何修訂增列程式

回復 16# 准提部林

准提部林 老師 你好
理解2.3天還是不明白.再理解理解
其中有2段不知可融匯一起
xNum = [V2] '單號
cName = [e2] '客戶.....
NM = [E2] '客戶......
DD = [E4] '日期
QQ = [E2] '客戶......原有設定

Mch = Application.Match(CLng(DD), [訂貨明細表!L:L], 0)  '先檢查日期是否存在
If IsNumeric(Mch) Then
     Arr = Range([訂貨明細表!L1], [訂貨明細表!A1].Cells(Rows.Count, 1).End(xlUp))
     For i = Mch To UBound(Arr)
         If Arr(i, 11) <> DD Then Exit For
         If Arr(i, 11) = DD And Arr(i, 1) = NM Then '日期相同+客戶相同(QQ = [E2] '客戶......原有設定)
            MsgBox "※日期:" & DD & ",客戶:" & NM & "已經有資料!   ": Exit
.................................................................................
Beep '若存在, 發出嗶聲, 並提示是否進行補增???
    If MsgBox("**客戶已存在! 你要繼續輸入本張訂單嗎?  ", 4 + 32 + 256) = vbNo Then Exit Sub '按"否"結束
    [e2] = [訂貨明細表!A:A].Cells(Mch, 1) '按"是", 自動填入"客戶名", 加入增補明細~~
....................................................
匯成
xNum = [V2] '單號
cName = [e2] '客戶.....
NM = [E2] '客戶......
DD = [E4] '日期
QQ = [E2] '客戶......原有設定

'程式資料來源至准提部林_出貨作業D版V01_10905
If Not xNum Like String(10, "#") Then MsgBox "**單號錯誤或空白! ": Exit Sub
If Left(xNum, 7) <> Year([E4]) - 1911 & Format([E4], "mmdd") Then MsgBox "**單號前7碼與日期不相符! ": Exit Sub
Mch = Application.Match(xNum, [訂貨明細表!K:K], 0)
If IsNumeric(Mch) Then MsgBox "**單號已存在! ": Exit Sub
Mch = Application.Match(CLng(DD), [訂貨明細表!L:L], 0)  '先檢查日期是否存在
If IsNumeric(Mch) Then
     Arr = Range([訂貨明細表!L1], [訂貨明細表!A1].Cells(Rows.Count, 1).End(xlUp))
     For i = Mch To UBound(Arr)
         If Arr(i, 12) <> DD Then Exit For
         If Arr(i, 12) = DD And Arr QQ = NM Then '日期相同+客戶相同(QQ = [E2] '客戶......原有設定)
            MsgBox "※日期:" & DD & ",客戶:" & NM & "已經有資料!   ": Exit Sub
         End If
     Next i
End If
........
    Beep '若存在, 發出嗶聲, 並提示是否進行補增???
    If MsgBox("**客戶已存在! 你要繼續輸入本張訂單嗎?  ", 4 + 32 + 256) = vbNo Then Exit Sub '按"否"結束
    [e2] = [訂貨明細表!A:A].Cells(Mch, 1) '按"是", 自動填入"客戶名", 加入增補明細~~
End If

.我先理解 .

謝謝 准提部林 老師
敏而好學,不恥下問

TOP

回復 18# 准提部林

准提部林 老師 你好
理解修改多天.還是不明白"頭暈暈"
我再重新整理再提問
謝謝 准提部林 老師
敏而好學,不恥下問

TOP

本帖最後由 BV7BW 於 2021-7-24 17:28 編輯

回復 20# 准提部林
謝謝 准提部林 老師

關于"修改""這部份已完成

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'程式資料來源至准提部林_1100624_X10000045_1
Dim R&, CN&, xE As Range
With Target
     If .Column <> [P1].Column Or .Value = "" Then Exit Sub
     R = Cells(Rows.Count, "k").End(3).Row
     Cancel = True
     If .Row = 1 Then
        With Range("e1:n" & R)
             .Borders.LineStyle = 1
             .Columns(9) = .Columns(9).Value
        End With
        Range("h1:h" & R).Formula = "=IF(ROW(A1)=1,""(KG)"",IF(F1=""台斤"",(MOD(E1,1)*100/16+INT(E1)),E1)*G1)"
     Else
        Set xE = Range("K1:K" & R).Find(.Value, lookat:=xlWhole)
        If xE Is Nothing Then MsgBox "*找不到指定的單號! ": Exit Sub
        CN = Application.CountIf(Range("K" & xE.Row & ":K" & R), .Value)
        With Range("e" & xE.Row).Resize(CN, 10)
             .Columns(9) = "=SUM(" & .Columns(4).Address & ")"
             .BorderAround Weight:=xlMedium, ColorIndex:=3
             .Item(1).Select
             .Item(1).Font.Color = vbRed
        End With
     End If
End With
End Sub
...........
至於"輸入"這追加部份則是需再產生另一單號.
例如:7月24日輸入了一張出貨單, 客戶:陳一, 單號:"1100724001", 共輸入10筆項目,
     7月24日臨時客戶:陳一追加了3種商品,則客戶:陳一, 單號:"1100724002", 共輸入3筆項目,這也完成
......................
xNum = [V2] '單號
cName = [E2] '客戶
'程式資料來源至准提部林_出貨作業D版V01_10905
If Not xNum Like String(10, "#") Then MsgBox "**單號錯誤或空白! ": Exit Sub
If Left(xNum, 7) <> Year([E4]) - 1911 & Format([E4], "mmdd") Then MsgBox "**單號前7碼與日期不相符! ": Exit Sub
Mch = Application.Match(xNum, [訂貨明細表!K:K], 0)
If IsNumeric(Mch) Then MsgBox "**單號已存在! ": Exit Sub
'Mch = Application.Match(CL, [訂貨明細表!A:A], 0)
'If IsNumeric(Mch) Then MsgBox "**客戶已存在! ": Exit Sub
'程式資料來源至准提部林_2021_7_3指導
Mch = Application.Match(cName, [訂貨明細表!A:A], 0) '檢查客戶是否存在
If IsNumeric(Mch) Then
   Beep '若存在, 發出嗶聲, 並提示是否進行補增???
   If MsgBox("**客戶已存在! 你要繼續輸入本張訂單嗎?  ", 4 + 32 + 256) = vbNo Then Exit Sub '按"否"結束
   [E2] = [訂貨明細表!A:A].Cells(Mch, 1) '按"是", 自動填入"客戶名", 加入增補明細~~
End If
...........................
現在問題所在是因訂貨明細表中
例)7月1日客戶:陳一, 單號:"1100701001"共輸入10筆項目
   7月1日客戶:陳一臨時追加, 單號:"1100701002"共輸入1筆項目
   7月2日客戶:陳一, 單號:"1100702001"共輸入5筆項目
因Mch = Application.Match(cName, [訂貨明細表!A:A], 0) '檢查客戶是否存在.
("其功能是防止客戶重複輸入"造成"採購需求"失真)

所以它是檢查"訂貨明細表"中有客戶:陳一,都會先檢查1次.其功用因此只有1半作用
也就是說只有每月第1次客戶:陳一.或"訂貨明細表"中沒有客戶:陳一其功用才能呈現出

現在做法是多1動作先將每日"訂貨明細表"手動複製另1工作表"訂貨存檔"貼上後將"訂貨明細表"清空.
問題就解結了

因而提問"工作表複製跨另一檔案工作表"問題

如能在"Mch = Application.Match(cName, [訂貨明細表!A:A], 0) '檢查客戶是否存在"中
加上或改為以日期每日以客戶做檢查既可.不用再增列另一工作表"訂貨存檔"直接以"訂貨明細表"作為存檔資料
在每月以訂貨明細表中資料再另存新檔作為歷史資料存檔

   感謝  准提部林 老師 指導
敏而好學,不恥下問

TOP

回復 25# 准提部林

感謝 准提部林 老師 指導
因更改區域很多.我可須再慢慢理解消化中
(**重點**:主要是預警客戶重複.輸入".追加部份則是需再產生另一單號.這部份已完成程式資料來源至准提部林_出貨作業D版V01_10905.
          (不是修改或增加原訂單單號內容).(關于"修改""這部份已完成.程式資料來源至准提部林_1100624_X10000045_1)
          **單號是固定連續編排.當日用過之單號不可再更動使用**
          目前做法先將每日"訂貨明細表"手動複製另1工作表"訂貨存檔"貼上後將"訂貨明細表"清空.
**測試後**
客戶與日期可同時一起檢查作用.但會延伸問題出現
訂單單號問題.需再回明細表中找尋客戶訂單單號.重新輸入單號(如輸入錯誤則產生混合訂單(列A車客戶與B車客戶混合同一訂單單號)
             更改重置後.需重新回訂貨表找當日最後單號.再輸入訂購表之單號.造成不便

             重置後單號錯誤(執行錯誤1004.應用程式與物件定義上錯誤).不能恢復.需手動輸入
          謝謝
敏而好學,不恥下問

TOP

回復 27# 准提部林

准提部林 老師 你好

謝謝你 老師 辛勞指導

經測試後需求已達到完全俯合
以客戶&日期作為檢查動作

還有1點點小問題(但沒關緊要)

就是說.當檢查到重複時須按完該單號所有項目後才可輸入

列)客戶:陳一單號1090529004有3項目.完成訂單
   當需追加時客戶:陳一單號1090529005有3項目.會去檢查動作需按1090529004單號所有項目後.
   才可輸入1090529005訂單單號完成

   也就是說要按3下後1090529005單號才能成立

   再如有第3筆訂單單號客戶:陳一單號1090529006有1項目
   就需按6下(11090529004有3項目.1090529005有3項目)才可輸入1090529006訂單單號

   如能只檢查該筆單號第1項目既可.有第2筆時一樣只檢查第1筆
   等於第2筆單號須按1下.第3筆單號須按2下

  感謝 准提部林 老師
敏而好學,不恥下問

TOP

回復 29# 准提部林
謝謝你 准提部林 老師指導

完全俯合需求
多次煩擾老師.真非常抱歉與感謝
敏而好學,不恥下問

TOP

        靜思自在 : 【做人的開始】每一天都是故人的開始,每一個時刻都是自己的警惕。
返回列表 上一主題