EXCEL中的VBA订单号无法根据日期自动更新,高手请进,代码如下:

这样的代码在当天打印保存的时候一点问题都没有,可是到第二天表格上还显示昨天的编号,不会跳转到今天的日期,必须保存后才能显示今天的编号,这样子很麻烦,很希望到第二天的时候就怎么跳转到当天的日期和编号,这样打印保存就以当天为准!
请高手帮帮忙修改一下代码!感激不尽!
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim xStr As String
xStr = Right(Sheets("单据").Range("P4"), 11)
If Left(xStr, 8) = Format(Date, "yyyymmdd") Then
xStr = Format(Date, "yyyymmdd") & Application.Text(Right(xStr, 3) + 1, "000")
Else
xStr = Format(Date, "yyyymmdd") & "001"
End If
Sheets("单据").Range("P4") = xStr
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)

改为 

Private Sub Workbook_Open()

就好了

================

然后 这段程序 还是保留, 就是要有2段 程序

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim xStr As String
xStr = Right(Sheets("单据").Range("P4"), 11)
If Left(xStr, 8) = Format(Date, "yyyymmdd") Then
xStr = Format(Date, "yyyymmdd") & Application.Text(Right(xStr, 3) + 1, "000")
Else
xStr = Format(Date, "yyyymmdd") & "001"
End If
Sheets("单据").Range("P4") = xStr
End Sub

追问

已经尝试过,不行的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-24
Private Sub Workbook_Open()
Dim xStr As String
xStr = Right(Sheets("单据").Range("P4"), 11)
If Left(xStr, 8) = Format(Date, "yyyymmdd") Then
Exit Sub
Else
xStr = Format(Date, "yyyymmdd") & "001"
End If
Sheets("单据").Range("P4") = xStr
End Sub

'可以加一个Workbook_Open事件的代码,判断下P4的日期是否是当天,是当天日期就退出,不是的话直接直接把内容改为“当天日期001”就可以了。也就是每次打开工作簿的时候先判断一下

第2个回答  2017-08-24
你的描述真的是 太详细了,其实 无论数据量有多么的大,既然你已经 在列表中显示了,那么还是直接使用 if 函数吧……如果你想写vba 的话 写的过程也是很“痛苦”嘀!……如果你的数据是只有原始数据不需要在表上作出判断,而是调用在其他地方 同时作出判断结果的话,你写vba 或许有必要……否则是自讨苦吃……函数能解决的问题 还是用函数……追问

大侠,请编写一个吧!我也试过了,保存到新表的时候,编号会根据我的品名行自动累计上去的,我希望保存一次就自动加一次,而不是累加上去

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网