【发布时间】:2016-05-28 02:52:10
【问题描述】:
我创建了一个电子表格 (Excel 2007),用于跟踪一年中的订单。作为跟踪的一部分,我需要根据日期和一天内到达的订单数量生成一个唯一标识符。计数每天都会重置。
例如;
请求 1= 日期:02/02/16 -> ID # 20160202-01
请求 2 = 日期:02/02/16 -> 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 & ""
新问题:如 cmets 中所述,如果电子表格关闭,则不会存储变量。因此,如果当天晚些时候有订单进来,计数就会被重置,从而产生重复,导致整个事情变得混乱。此外,如果混音中有不连续的日期,则生成器将无法工作。
【问题讨论】:
-
如果我们能看到您当前的相关代码,那就太好了,找到错误可能比重新发明代码更容易。
-
当电子表格关闭并重新打开时,您不能将值“存储”在变量中。数据是如何存储的?我们或许可以在此基础上找到一个简单的解决方案。
-
将计数存储在工作表上的单元格中,并让代码递增所述单元格。
标签: excel excel-2007 public uniqueidentifier vba