Excel VBA比较给定日期和(给定日期 - 2个月)

时间:2015-12-23 01:19:24

标签: vba excel-vba date excel

我正在编写代码以确保系统的数据日期不迟于2个月的商业月末日期。例如,如果系统的作业运行日期为23/12/2015,则有效数据日期为2015年10月30日和2015年11月30日。涉及的日期仅为工作日。

我的代码如下:

keyword

但是,我不知道如何找到:

  1. 本月的最后一天
  2. 计算2个营业月份
  3. 任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:3)

要查找当月的最后一天,您可以找到下个月的第一天并减去一天:

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

答案 1 :(得分:2)

以下是如何获得一个月的最后一天:

Sub LastDayOfMonth()
    Dim d As Date
    mnth = 12
    yr = 2015
    d = DateSerial(yr, mnth + 1, 0)
    MsgBox d
End Sub

然后必须从该日期减去两个月。如果结果是星期六或星期日,您必须决定是要继续前进到下周一还是后退到上周五。