Excel VBA比较给定日期和(给定日期-2个月)
我正在编写代码,以确保系统的数据日期不晚于2个营业月的结束日期。例如,如果系统的作业运行日期为2015年12月23日,则有效数据日期为2015年10月30日和2015年11月30日。所涉及的日期仅为工作日 我有以下代码:Excel VBA比较给定日期和(给定日期-2个月),vba,excel,date,Vba,Excel,Date,我正在编写代码,以确保系统的数据日期不晚于2个营业月的结束日期。例如,如果系统的作业运行日期为2015年12月23日,则有效数据日期为2015年10月30日和2015年11月30日。所涉及的日期仅为工作日 我有以下代码: If DateDiff("m", dataDate, jobRunDate) > 2 Then MsgBox "Error in dataDate" End If 但是,我不知道如何找到: 月的最后一天 计算2个工作月后 任何帮助都将不胜感激。谢谢 以下是如何获
If DateDiff("m", dataDate, jobRunDate) > 2 Then
MsgBox "Error in dataDate"
End If
但是,我不知道如何找到:
任何帮助都将不胜感激。谢谢 以下是如何获得一个月的最后一天:
Sub LastDayOfMonth()
Dim d As Date
mnth = 12
yr = 2015
d = DateSerial(yr, mnth + 1, 0)
MsgBox d
End Sub
然后必须从该日期减去两个月。如果结果是星期六或星期天,您必须决定是继续到下一个星期一还是回到上一个星期五。以下是如何获得一个月的最后一天:
Sub LastDayOfMonth()
Dim d As Date
mnth = 12
yr = 2015
d = DateSerial(yr, mnth + 1, 0)
MsgBox d
End Sub
然后必须从该日期减去两个月。如果结果是星期六或星期日,您必须决定是要前进到下一个星期一还是后退到上一个星期五。要查找一个月的最后一天,您可以查找下一个月的第一天并减去一天:
Dim last As Date
Dim current As Date
current = Now
last = DateSerial(Year(current), Month(current), 1) - 1
Debug.Print last
要获得一个月的最后一个工作日,只需减去天数,直到它落在工作日:
Do While Weekday(last, vbMonday) > 5
last = last - 1
Loop
Debug.Print last
将这两个想法结合起来,并将其提取为一个函数,可以得到以下结果:
Private Sub Example()
Debug.Print LastBizDayOfMonth(Year(Now), Month(Now) - 1)
Debug.Print LastBizDayOfMonth(Year(Now), Month(Now) - 2)
End Sub
Private Function LastBizDayOfMonth(inYear As Integer, inMonth As Integer) As Date
LastBizDayOfMonth = DateSerial(inYear, inMonth + 1, 1) - 1
Do While Weekday(LastBizDayOfMonth, vbMonday) > 5
LastBizDayOfMonth = LastBizDayOfMonth - 1
Loop
End Function
要查找一个月的最后一天,可以查找下个月的第一天并减去一天:
Dim last As Date
Dim current As Date
current = Now
last = DateSerial(Year(current), Month(current), 1) - 1
Debug.Print last
要获得一个月的最后一个工作日,只需减去天数,直到它落在工作日:
Do While Weekday(last, vbMonday) > 5
last = last - 1
Loop
Debug.Print last
将这两个想法结合起来,并将其提取为一个函数,可以得到以下结果:
Private Sub Example()
Debug.Print LastBizDayOfMonth(Year(Now), Month(Now) - 1)
Debug.Print LastBizDayOfMonth(Year(Now), Month(Now) - 2)
End Sub
Private Function LastBizDayOfMonth(inYear As Integer, inMonth As Integer) As Date
LastBizDayOfMonth = DateSerial(inYear, inMonth + 1, 1) - 1
Do While Weekday(LastBizDayOfMonth, vbMonday) > 5
LastBizDayOfMonth = LastBizDayOfMonth - 1
Loop
End Function
什么是“营业月”?一个月的营业日,基本上是星期一到星期五。什么是“营业月”?一个月的营业日,基本上是星期一到星期五。。