返回列表 上一主題 發帖

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

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

各位 前輩先進 大家好

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

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 >>>>需求=更改增加上可允許重複繼續執行

                          感謝 指教
敏而好學,不恥下問

回復 1# BV7BW


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

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

TOP

回復 2# BV7BW


允許重覆, 就刪去, 不檢查即可~~

TOP

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

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

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

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

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

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

            謝謝
敏而好學,不恥下問

TOP

回復 4# BV7BW

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

若第1次輸入了錯誤的客戶名, 只能在出貨明細表中手動更正了~~~

TOP

本帖最後由 准提部林 於 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

TOP

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

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

TOP

回復 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
敏而好學,不恥下問

TOP

回復 8# BV7BW

xNum&  ---這定義為長整數
客戶名是文字型態
另定義一個 cName$ 替換

TOP

回復 9# 准提部林

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

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

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題