ElseIf a <> 0 And RPTDate <> SYSDate Then MsgBox "当前不是月初,但系统时间错误或是报表错误"ElseIf a = 0 And RPTDate = SYSDate Then MsgBox "现在是月初第一天,请打开" & Month(Now) - 1 & "月的报表"ElseIf a = 0 And RPTDate < SYSDate And Right(RPTDate, 1) + 1 = Month(Now) Then
a = Day(DateSerial(Year(Now), Month(Now), 0))
x = Weekday(DateSerial(Year(Now), Right(RPTDate, 1) + 1, a))
If x = 2 Then MsgBox "上个月最后一天是星期一,请提交星期天和星期一的两张报表!"
ElseIf a <> 0 And RPTDate <> SYSDate Then MsgBox "报表日期是:" & RPTDate & ".系统日期是:" & Date & "。且当前不是月初,可能系统时间错误或是打开报表错误,请检查。"ElseIf a = 0 And RPTDate = SYSDate Then MsgBox "报表日期是:" & RPTDate & ".系统日期是:" & Date & "。现在是月初第一天,请打开" & Month(Now) - 1 & "月的报表"ElseIf a = 0 And RPTDate < SYSDate And Right(RPTDate, 1) + 1 = Month(Now) Then
a = Day(DateSerial(Year(Now), Month(Now), 0))
x = Weekday(DateSerial(Year(Now), Right(RPTDate, 1), a))
If x = 2 Then MsgBox "上个月最后一天是星期一,请提交星期天和星期一的两张报表!"
MsgBox "报表日期是:" & RPTDate & ".系统日期是:" & Date & ".请手动复制并提交上个月最后一天的报表!"
Else
MsgBox "报表日期是:" & RPTDate & ".系统日期是:" & Date & "可能系统时间错误或是打开报表错误,请检查。"
刚刚又进行了一次测试,发现RIGHT(PRTDATE,1)只返回一位数值,在2005-11-1时,就不能正确返回上个月的月份为10,所以以下红色代码ElseIf a = 0 And RPTDate < SYSDate And Right(RPTDate, 1) + 1 = Month(Now) Then
a = Day(DateSerial(Year(Now), Month(Now), 0))
x = Weekday(DateSerial(Year(Now), Right(RPTDate, 1), a))
If x = 2 Then MsgBox "上个月最后一天是星期一,请提交星期天和星期一的两张报表!"
MsgBox "报表日期是:" & RPTDate & ".系统日期是:" & Date & ".请手动复制并提交上个月最后一天的报表!"
应改为:ElseIf a = 0 And Month(Now) = Month(Worksheets("数值").[c2]) + 1 Then
a = Day(DateSerial(Year(Now), Month(Now), 0))
x = Weekday(DateSerial(Year(Now), Month(Worksheets("数值").[c2]), a))
If x = 2 Then
MsgBox "上个月最后一天是星期一,请提交星期天和星期一的两张报表!"
Else
MsgBox "报表日期是:" & RPTDate & ".系统日期是:" & Date & ".请手动复制并提交上个月最后一天的报表!"