Board logo

標題: [發問] 如何修訂增列程式 [打印本頁]

作者: BV7BW    時間: 2021-7-2 08:14     標題: 如何修訂增列程式

各位 前輩先進 大家好

問題請教:如何修訂增列程式
         需求="客戶已存在"後.更改增加上可允許重複繼續執行

Sub 客戶訂購表_輸出()
'程式資料來源至准提部林_出貨作業D版V01_10905
Dim R&, CN&, Arr, Brr, Crr, Drr, QQ, i&, j%, N&, xE As Range, X%, Mch, xNum&, PNo$, CL$
R = [L65536].End(xlUp).Row
CN = Application.Count(Range("M4:M" & R))
If CN = 0 Then MsgBox "**尚未輸入數量!  ": Exit Sub

If [E2] = "" Then MsgBox "**尚未輸入客戶名稱!  ": Exit Sub

If Not IsDate([E4]) Then MsgBox "**日期空白或錯誤! ": Exit Sub


'------------------------------------
xNum = [V2] '單號
CL = [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(xNum, [訂貨明細表!A:A], 0)

If IsNumeric(Mch) Then MsgBox "**客戶已存在! ": Exit Sub >>>>需求=更改增加上可允許重複繼續執行

                          感謝 指教
作者: BV7BW    時間: 2021-7-2 08:32

回復 1# BV7BW


    更正
Mch = Application.Match(CL, [訂貨明細表!A:A], 0)

If IsNumeric(Mch) Then MsgBox "**客戶已存在! ": Exit Sub >>>>需求=更改增加上可允許重複繼續執行
作者: 准提部林    時間: 2021-7-2 11:23

回復 2# BV7BW


允許重覆, 就刪去, 不檢查即可~~
作者: BV7BW    時間: 2021-7-2 20:20

回復 3# 准提部林
准提部林 老師你好

老師可能誤解允許重複用意

第1次是輸入是正常訂購.但有時在輸入時會可能產生重複輸入客戶名

.導致採購及配送嚴重誤差.因此先有檢查方式.防止重複
.
第2次在輸入是補貨訂購.但當日已有訂購紀錄時.就擋住不能輸入.

所以需求可選擇可"是"或"否"繼續執行

目前只能先行檢查動作.可否能再進一步"是"或"否"選擇方式

            謝謝
作者: 准提部林    時間: 2021-7-3 10:42

回復 4# BV7BW

__第1次是輸入正常訂購.但有時在輸入時會可能產生重複輸入客戶名
每張單號只會有一個客戶名, 怎會有重覆客戶名的問題???
同一客戶會有不同單號, 在出貨明細表當然會有重覆, 這時檢查客戶名是否重覆, 是不正確的(以後的都無法輸入了)!!!
我原來寫的並沒有檢測客戶是否重覆??? 你自己加的吧!!!

若第1次輸入了錯誤的客戶名, 只能在出貨明細表中手動更正了~~~
作者: 准提部林    時間: 2021-7-3 10:54

本帖最後由 准提部林 於 2021-7-3 10:56 編輯

回復 4# BV7BW

原寫的檔案已被更動, 只能瞎寫, 以下的位址須自行更改~~

Mch = Application.Match(xNum, [訂貨明細表!K:K], 0) '檢查單號是否存在
If IsNumeric(Mch) Then
   Beep '若存在, 發出嗶聲, 並提示是否進行補增???
   If MsgBox("**單號已存在! 你確定要增加本張訂單的出貨明細?  ", 4 + 32 + 256) = vbNo Then Exit Sub '按"否"結束
   [e2] = [訂貨明細表!A:A].Cells(Mch, 1) '按"是", 自動填入"客戶名"
End If
作者: BV7BW    時間: 2021-7-3 11:21

回復 6# 准提部林

感謝 准提部林 老師

完全俯合需求.位址已修改以下

Mch = Application.Match(CL, [訂貨明細表!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

非常感謝 准提部林 老師 謝謝教導
作者: BV7BW    時間: 2021-7-3 12:19

回復 6# 准提部林

准提部林 老師

剛測試用客戶名是數字(991)(992)993)....等等都是以數字編號.完全運作.無錯誤
換上正常使用版之客戶名是以中文.列(A車).(B車)(福華飯店)等等有中文時出現錯誤現象
CL=[e2]顯示出(執行階段錯誤"13"型態不符合)
是否可改?
原程式
Sub 客戶訂購表_輸出()
Dim R&, CN&, Arr, Brr, Crr, Drr, QQ, i&, j%, N&, xE As Range, X%, Mch, xNum&, PNo$
R = [L65536].End(xlUp).Row
CN = Application.Count(Range("M4:M" & R))
If CN = 0 Then MsgBox "**尚未輸入數量!  ": Exit Sub
If [E2] = "" Then MsgBox "**尚未輸入客戶名稱!  ": Exit Sub
If Not IsDate([E4]) Then MsgBox "**日期空白或錯誤! ": Exit Sub
'------------------------------------
xNum = [V2] '單號
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

原程式增列 CL&
           CL = [e2] '客戶
           這2地方
修改後程式
Sub 客戶訂購表_輸出()
'程式資料來源至准提部林_出貨作業D版V01_10905
Dim R&, CN&, Arr, Brr, Crr, Drr, QQ, i&, j%, N&, xE As Range, X%, Mch, xNum&, PNo$, CL&
R = [L65536].End(xlUp).Row
CN = Application.Count(Range("M4:M" & R))
If CN = 0 Then MsgBox "**尚未輸入數量!  ": Exit Sub
If [e2] = "" Then MsgBox "**尚未輸入客戶名稱!  ": Exit Sub
If Not IsDate([E4]) Then MsgBox "**日期空白或錯誤! ": Exit Sub
'------------------------------------
xNum = [V2] '單號
CL = [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
Mch = Application.Match(CL, [訂貨明細表!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
作者: 准提部林    時間: 2021-7-3 17:21

回復 8# BV7BW

xNum&  ---這定義為長整數
客戶名是文字型態
另定義一個 cName$ 替換
作者: BV7BW    時間: 2021-7-3 18:02

回復 9# 准提部林

准提部林 老師 你好
現測試後.可行運作.
也發現到假如用數字編號就沒經過檢查動作.就直接輸入訂貨明細.如後面加一中文既可

謝謝 准提部林 老師
作者: BV7BW    時間: 2021-7-10 03:20

回復 9# 准提部林

准提部林 老師 你好


再經測試後.當"客戶"隔日要輸入時同樣經檢查才能輸入

這造成"客戶"檢查失去意義.

所以現在是須將當日"訂貨明細表"先行建檔後.清空以利隔日輸入

又造成."月結帳"時無法建立資料不便.

因現檢查是以"訂貨明細表"為基準.檢查"客戶"是否有重複動作

是否可用以"訂貨明細表"之"日期"為基準.再去比對"客戶"是否有重複.如有重複.再行"是"或"否"動作

       謝謝指教
作者: BV7BW    時間: 2021-7-10 03:31

[attach]33557[/attach]回復 11# BV7BW
作者: BV7BW    時間: 2021-7-10 06:21

回復  BV7BW
BV7BW 發表於 2021-7-10 03:31


"訂貨明細表"
A欄="客戶"
L欄="日期"
作者: 准提部林    時間: 2021-7-10 11:51

早就提醒過這是小型的進銷存的需求, 太繁雜...難寫
現在你要的就是[查詢]-[修改]-[存入],
但你檔案已修改太多, 無從下手, 只能寫個簡易的, 不防人為錯誤操作:
[attach]33562[/attach]

1) 使用[修改輸入]按鈕, 輸入舊單號
2) 將要新增的品項輸入數量, 再按[輸出]存入明細表
3) 注意:這無法排除原出貨單中的已有的品項, 亦即只能增加新的, 舊的請在明細表中手動修改
4) 修改新增的, 會填入淡綠色以區別

這種程式寫來頗難, 要考慮的太多, 沒時間及精神去寫~~
作者: BV7BW    時間: 2021-7-10 16:55

回復 14# 准提部林

准提部林 老師 你好 辛勞你了

謝謝你不持辛勞.為學生費心.非常感謝你

可能是學生想法用意.一時表達不明.而不是程式問題.浪費老師辛勞及精力.拐繞一大圈.注重在單號修改

    實感抱歉
作者: 准提部林    時間: 2021-7-10 17:32

本帖最後由 准提部林 於 2021-7-10 17:35 編輯

回復 15# BV7BW

NM = [a2] '客戶
DD = [A4] '日期
Mch = Application.Match(CLng(DD), [訂貨明細表!k:k], 0)  '先檢查日期是否存在
If IsNumeric(Mch) Then
    Arr = Range([訂貨明細表!m1], [訂貨明細表!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 '日期相同+客戶相同
           MsgBox "※日期:" & DD & ",客戶:" & NM & "已經有資料!   ": Exit Sub
        End If
    Next i
End If

這樣就無法將原單叫出來修改增加品項了!!! 亦即同一天同一客戶只能輸入一次資料!
人為錯誤程式大部份無法排除, 一般打單之前一定有手寫草稿,
要養成習慣, 輸入時, 同時將草稿上的客戶名稱或編號用筆圈起來, 這是一個很重要的確認動作,
輸入完成後, 也必須在草稿上寫下"單號", 這樣就可以排除重覆或key錯的問題~~
作者: BV7BW    時間: 2021-7-13 02:33

回復 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

.我先理解 .

謝謝 准提部林 老師
作者: 准提部林    時間: 2021-7-13 13:02

回復 17# BV7BW

同一個按鈕, 無法同時進行"新增/修改"功能, 因為檢查方式不相同~~
[attach]33606[/attach]

要"新增"--使用"重置"按鈕--狀態"待命中"--開始輸入
要"更改"--使用"修改輸入"按鈕--狀態"修改中"--輸入單號--開始輸入

自行去套~~
作者: BV7BW    時間: 2021-7-24 08:36

回復 18# 准提部林

准提部林 老師 你好
理解修改多天.還是不明白"頭暈暈"
我再重新整理再提問
謝謝 准提部林 老師
作者: 准提部林    時間: 2021-7-24 12:12

回復 19# BV7BW


關于"修改輸入"
例如:今天你輸入了一張出貨單, 客戶:陳一, 單號:1100724001, 共輸入10筆項目,
但臨時客戶追加了3種商品,
就可以使用"修改輸入"按鈕, 在inputbox中輸入單號1100724001, 按確定,
即可輸入追加的商品, 按"輸出", 這3筆就會加入明細裡!!!

當然, 增加這功能後, 原程式就有變動, 要自行去比對哪裡需要修改或增加!!!
作者: BV7BW    時間: 2021-7-24 17:27

本帖最後由 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) '檢查客戶是否存在"中
加上或改為以日期每日以客戶做檢查既可.不用再增列另一工作表"訂貨存檔"直接以"訂貨明細表"作為存檔資料
在每月以訂貨明細表中資料再另存新檔作為歷史資料存檔

   感謝  准提部林 老師 指導
作者: 准提部林    時間: 2021-7-24 19:27

回復 21# BV7BW

現在問題所在是因訂貨明細表中
例)7月1日客戶:陳一, 單號:"1100701001"共輸入10筆項目
   7月1日客戶:陳一臨時追加, 單號:"1100701002"共輸入1筆項目
   7月2日客戶:陳一, 單號:"1100702001"共輸入5筆項目
  


我18樓上的附件, 你可能都沒測試....
7月1日客戶:陳一, 單號:"1100701001"共輸入10筆項目....ok
7月1日客戶:陳一臨時追加, 單號:"1100701002"共輸入1筆項目....不行, 程式會擋掉, 因同一天, 一個客戶只能有一張單子, 不能有兩個單號, 只能輸入1100701001執行修改增加

7月2日客戶:陳一, 單號:"1100702001"共輸入5筆項目....OK, 日期已經不同, 不會視為客戶重覆
作者: 准提部林    時間: 2021-7-24 19:41

這是新增的部份:
注意:儲存格 N5...會有"待命中/修改中" 狀態, 以判斷你執行的是"新增" 或 "修改
  

Sub 客戶訂購表_修改輸入() '=2021.07.10增修===========
Dim cNo$, xF As Range
If [n5] = "修改中" Then MsgBox "※正在修改作業中,若想進行其他操作,請按〔重置〕! ": Exit Sub
Re_Try:
cNo = InputBox("※請輸入十位數出貨單號,再按確定! ", , cNo)
If StrPtr(cNo) = 0 Then Exit Sub
If Not cNo Like String(10, "#") Then MsgBox "※出貨單號空白或格式錯誤!  ": GoTo Re_Try
Set xF = [訂貨明細表!J:J].Find(cNo, Lookat:=xlWhole)
If xF Is Nothing Then MsgBox "※找不到這筆出貨單號!  ": GoTo Re_Try
Set xF = xF(1, 2 - xF.Column) '將xF定位到A欄
[o2] = cNo '單號
[a2] = xF  '客戶名稱
[A4] = xF(1, 11) '日期
[a8] = xF(1, 13) '採購單號
[n5] = "修改中"  '狀態格
End Sub
作者: 准提部林    時間: 2021-7-24 19:44

藍色部份是修改或新增的部份!!!

Sub 客戶訂購表_輸出()
Dim R&, CN&, Arr, Brr, Crr, Drr, QQ, i&, j%, N&, xE As Range, X%, Mch, xNum&, pNo$
R = [F65536].End(xlUp).Row
CN = Application.Count(Range("G4:G" & R))
If CN = 0 Then MsgBox "**尚未輸入數量!  ": Exit Sub
If [a2] = "" Then MsgBox "**尚未輸入客戶名稱!  ": Exit Sub
If Not IsDate([A4]) Then MsgBox "**日期空白或錯誤! ": Exit Sub
'------------------------------------
xNum = [o2] '單號
If Not xNum Like String(10, "#") Then MsgBox "**單號錯誤或空白! ": Exit Sub
If Left(xNum, 7) <> Year([A4]) - 1911 & Format([A4], "mmdd") Then MsgBox "**單號前7碼與日期不相符! ": Exit Sub
'///2021.07.13增修////////////////////////////
Mch = Application.Match(xNum, [訂貨明細表!J:J], 0) '檢查單號是否已存在
If [n5] <> "修改中" Then
   If IsNumeric(Mch) Then MsgBox "**單號已存在! ": Exit Sub
   NM = [a2] '客戶
   DD = [A4] '日期
   Mch = Application.Match(CLng(DD), [訂貨明細表!k:k], 0)  '先檢查日期是否存在
   If IsNumeric(Mch) Then
       Arr = Range([訂貨明細表!m1], [訂貨明細表!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 '日期相同+客戶相同
              MsgBox "※日期:" & DD & ",客戶:" & NM & "已經有資料!   " & vbCrLf & _
                     " 若想新增舊訂單的內容,請使用〔修改輸入〕按鈕! "
              Exit Sub
           End If
       Next i
   End If
End If
'////////////////////////////////////////////////
'-----------------------------------------------
pNo = [a8].Text
If UCase(Right([M2], 1)) = "S" And pNo = "" Then
   MsgBox "**【客戶編號:" & [M2] & "】結尾有""S"", 必須輸入【採購單號】,   " & vbCrLf & vbCrLf & _
          "若沒有【採購單號】,或暫時不輸入, 請輸入0!"
   [a8].Select: Exit Sub
End If
If pNo = "N/A" Then pNo = ""
'-----------------------------------------------
Arr = Range("D4:J" & R)
ReDim Crr(1 To CN, 1 To 13)
For i = 1 To UBound(Arr)
    If Val(Arr(i, 4)) <= 0 Then GoTo 101
    N = N + 1
    '(1)客戶(2)客戶編號(3)項目編號(4)項目名稱(5)數量(6)單價(7)金額(8)類別(9)車編(10)單號(11)日期(12)合計金額(13)採購單號
    QQ = Array([a2], [M2], Arr(i, 1), Arr(i, 2), Arr(i, 4), Arr(i, 5), "=N(RC[-2])*N(RC[-1])", Arr(i, 7), [M4], xNum, [A4], Val([O7]), pNo)
    For j = 0 To UBound(QQ)
        Crr(N, j + 1) = QQ(j)
    Next j
101: Next i
If N = 0 Then Exit Sub
'-------------------------------------
'=2021.07.10增修===========
With Sheets("訂貨明細表")
     With .[A65536].End(xlUp)(2).Resize(N, UBound(Crr, 2))
          .Value = Crr
           If [n5] = "修改中" Then .Interior.ColorIndex = 35 '若屬修改..填淡綠色
     End With
     Range(.[m1], .[A65536].End(xlUp)).Sort Key1:=.[j1], Order1:=xlAscending, Header:=xlYes
End With
If [n5] = "修改中" Then
   [o2].Formula = "=IF(A4="""","""",IF(ISNA(MATCH(A4,訂貨明細表!K:K,)),TEXT(A4,""emmdd"")*1000,LOOKUP(TEXT(A4+1,""emmdd"")*1000,訂貨明細表!J:J))+1)"
   [n5] = "待命中"
End If
'=======================================
'-------------------------------------
ChangeChk = 1: [送貨單!B2] = xNum
Call 送貨單_載入: ChangeChk = 0
'----------------------------------------
Range("G4:G" & R).ClearContents: [a2] = "": [a8] = "" '清除:數量/客戶/採購單號, 供下次輸入
If MsgBox("※輸出完成, 是否要立即跳至[送貨單]??  ", 4 + 32 + 256) = vbYes Then Application.Goto [送貨單!A7]
End Sub


'*********************************************
作者: 准提部林    時間: 2021-7-24 19:45

藍色部份是修改或新增的部份!!!  

Sub 客戶訂購表_重置()
Dim R&
If MsgBox("※確定要重置輔助公式及清除輸入數量嗎?  ", 4 + 32 + 256) = vbNo Then Exit Sub
R = [B65536].End(xlUp).Row
Range("G3:G" & R).ClearContents
Call 客戶訂購表_輔助公式
'=2021.07.10增修===========
[o2].Formula = "=IF(A4="""","""",IF(ISNA(MATCH(A4,訂貨明細表!K:K,)),TEXT(A4,""emmdd"")*1000,LOOKUP(TEXT(A4+1,""emmdd"")*1000,訂貨明細表!J:J))+1)"
[n5] = "待命中"
'======================================
End Sub
作者: BV7BW    時間: 2021-7-25 06:34

回復 25# 准提部林

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

             重置後單號錯誤(執行錯誤1004.應用程式與物件定義上錯誤).不能恢復.需手動輸入
          謝謝
作者: 准提部林    時間: 2021-7-25 10:28

回復 26# BV7BW

邏輯跟不上, 整個都混了....
回到原點:
輸出時--檢查同一日是否有相同的客戶,
若有...提示訊息..按"否"-不動作結束...按"是"-以新單號輸出至明細表
[attach]33743[/attach]

同一日, 客戶有新追加者, 都以新單號處理, 不再用舊單號作增補了!!!
作者: BV7BW    時間: 2021-7-25 23:05

回復 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下

  感謝 准提部林 老師
作者: 准提部林    時間: 2021-7-26 11:42

回復 28# BV7BW

If Arr(i, 11) = DD And Arr(i, 1) = NM Then '日期相同+客戶相同
    Beep '若存在, 發出嗶聲, 並提示是否進行補增???
    If MsgBox("※日期:" & DD & ",客戶:" & NM & ",單號:" & Arr(i, 10) & ",已經有資料!   " & vbCrLf & vbCrLf & _
          ",你要繼續輸入本張訂單嗎?  ", 4 + 32 + 256) = vbNo Then Exit Sub  '按"否"結束
    Exit For  '加這一行
End If
作者: BV7BW    時間: 2021-7-26 11:51

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

完全俯合需求
多次煩擾老師.真非常抱歉與感謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)