|
这是自您晓月清风回复后(周五吧)再次新出现的问题:
麻烦看看下面的问题:
经过考虑,大概有下面情况:
If Day(Now) - 1 = 0 And Format(Worksheets("数值").Range("c2"), "yyyy-mm") = Format(Now, "yyyy-mm") Then
1.报表里的标记日期里的月份M1=当前系统日期里的月份时M2,并且A=0月初第一天时,提示打开正确的报表
2.报表里的标记日期里的月份M1=当前系统日期里的月份时M2,并且A<>0不是月初第一天时,
分类:周一或非周一。执行报表复制:分日期是否为星期一,是则复制两天,否复制一天的
3.报表里的标记日期里的月份M1<>当前系统日期里的月份时M2,且M1+1=M2时,并且A=0月初第一天,执行报表复制
分类:周一或非周一。执行报表复制:分日期是否为星期一,是则复制两天,否复制一天的
4.报表里的标记日期里的月份M1<>当前系统日期里的月份时M2,且M1+1<>M2时,并且A<>0非月初第一天,提示打开
5.报表里的标记日期里的月份M1=当前系统日期里的月份时M2,并且A<>0不是月初第一天时,执行报表复制
分类:周一或非周一。 执行报表复制:分日期是否为星期一,是则复制两天,否复制一天的
如何把这些条件加入下面的代码里呢?我加了点,测试出现了一些错误,解决不了。谢谢
Private Sub Workbook_open()
Dim a As String
Dim b As String
Dim c As String ' 创建一个临时变量,以防出现生成的文件名为0号
Dim RptName1 As String
Dim RptName2 As String
Dim mypath As String
Dim Done As String '生成上交报表的日期与时间
Dim MyToday As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
RptName1 = Month(Now) & "月" & Day(Now) - 1 & "号"
RptName2 = Month(Now) & "月" & Day(Now) - 2 & "号"
Done = Now()
MyToday = Month(Now()) & "月" & Day(Now()) & "号" '将生成日期标记于生成的报表名称
Msg = "要现在上交报表吗?点是,将生成上交报表,点否将不生成报表。请在生成后检查!!!谢谢"
Style = vbYesNo + vbInformation + vbDefaultButton1
Title = "请在生成后检查!!!谢谢"
If Day(Now) - 1 = 0 And Format(Worksheets("数值").Range("c2"), "yyyy-mm") = Format(Now, "yyyy-mm") Then
'检查打开的报表日期与系统日期相同,且为月初的第一天,则提示打开正确的报表
MsgBox "本月是月初的第一天,请打开正确的报表并上交!谢谢"
Application.Workbooks.Open (Application.GetOpenFilename)
'如果点取消的话,会出现无法找到文件FALSE的提示,并导致宏出错,如何添加出错机制,允许取消?
Else
If Day(Now) - 1 = 0 And Format(Worksheets("数值").Range("c2"), "yyyy-mm") > Format(Now, "yyyy-mm") Then
'检查打开的报表日期与系统日期相同,且为月初的第一天,则提示打开正确的报表
MsgBox "本月是月初的第一天,打开的报表月份与系统月份不一致,请打开正确的报表并上交!谢谢"
Application.Workbooks.Open (Application.GetOpenFilename)
'如果点取消的话,会出现无法找到文件FALSE的提示,并导致宏出错,如何添加出错机制,允许取消?
Else
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then
MyString = "Yes"
a = Day(Now) - 1 '定义出需要复制的工作表名
mypath = ThisWorkbook.Path ''获得当前文件存放的位置
If a = 0 And Format(Worksheets("数值").Range("c2"), "yyyy") = Format(Now, "mm") And Format(Worksheets("数值").Range("c2") - 1, "mm") = Format(Now, "mm") Then
'即判断当前日期是否为月初第一天,并且打开的工作表标记月份+1是否与系统月份相同。如果是则提醒打开上个月的报表
a = Day(DateSerial(Year(Now), Month(Now), 0))
c = Month(Now) - 1 '创建一个临时变量,以防出现生成的文件名为0号
Sheets(Array(a, "黄小姐")).Copy
ActiveWorkbook.SaveAs Filename:= _
mypath & |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|