我已經創建了一個電子表格(Excel 2007),可以跟蹤一年中的訂單。作爲跟蹤的一部分,我需要根據日期和每天到達的訂單數生成唯一標識符。計數每天都會重置。根據日期和請求數創建唯一ID
例如;
請求1 =日期:16年2月2日 - > ID#20160202-01
請求2 =日期:16年2月2日 - > ID#20160202-02
請求3 =日期:02/03/16 - > ID#20160202-01
由於業務性質,訂單以電子郵件格式發送,然後通過用戶窗體輸入電子表格。在這個用戶表單中,如果請求的日期與前一個條目相匹配,我嘗試了一個If..Then語句來增加一個變量(n)。這個工作,但(n)的值重置,無論何時形式運行,這意味着我可以得到的最大值是2.
我相信修復在於使(n)全局/公共變量,但我不知道如何使用公共變量通過用戶窗體訪問。有沒有人有任何建議,或很好的參考來解決這個問題?預先感謝您的幫助。
更新:謝謝大家的快速反饋。我剛剛有一位同事,一時興起,問她是否爲我解決問題。她告訴我,一個靜態變量將是解決這個問題的方法。此修復有所幫助,但不是一個完美的解決方案。我將發佈相關代碼以顯示已實施的修復程序。
Sub CommandButtonSubmitClose_Click()
Static n As Integer
Dim ordDate As Date
Dim ordYear As Integer
Dim txtYear As String
Dim txtMonth As String
Dim txtDay As String
Dim txtCount As String
Dim IDnum As String
Dim prevRow As Long
Dim LastRow As Long, ws As Worksheet
'Define variables'
prevRow = LastRow - 1
txtYear = reqYear
txtMonth = Format(month(reqDate), "00")
txtDay = Format(day(reqDate), "00")
If ordDate = ws.Range("A" & prevRow).Value Then
n = n + 1
Else 'Determine daily count'
n = 1
End If
txtCount = Format(n, "00")
'Create ID Number'
IDnum = " " & txtYear & "" & txtMonth & "" & txtDay & "-" & txtCount & ""
新問題:如評論中所述,如果電子表格已關閉,則不存儲該變量。因此,如果訂單在當天晚些時候進入,計數將被重置,從而導致重複,導致整個事情變得不合時宜。另外,如果在混音中存在不連續的日期,則發生器不起作用。
這將是很好,如果我們看到了當前的相關代碼,它可能是更容易找到,而不是重塑代碼中的錯誤。 –
當電子表格關閉並重新打開時,您無法「將」值存儲在變量中。數據如何存儲?我們可能會在此基礎上找到簡單的解決方案。 – MatthewD
將計數存儲在工作表上的單元格中並使代碼增加所述單元格。 – findwindow