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
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”就可以了。也就是每次打开工作簿的时候先判断一下
你的描述真的是 太详细了,其实 无论数据量有多么的大,既然你已经 在列表中显示了,那么还是直接使用 if 函数吧……如果你想写vba 的话 写的过程也是很“痛苦”嘀!……如果你的数据是只有原始数据不需要在表上作出判断,而是调用在其他地方 同时作出判断结果的话,你写vba 或许有必要……否则是自讨苦吃……函数能解决的问题 还是用函数……