月结束日期VBA



我需要帮助在VBA中编写一行代码来返回月结束日期。月结束日期的逻辑是这样的。。。

如果一个月的最后一天结束于…

星期日:那个月的最后一天就是上一个星期六。(昨天)

星期一:那个月的最后一天就是上一个星期六。(2天前)

星期二:那个月的最后一天就是前一个星期六。(3天前)

星期三:那么当月的最后一天就是即将到来的星期六(未来3天)

星期四:那个月的最后一天是即将到来的星期六(未来两天)

星期五:那么当月的最后一天就是即将到来的星期六(未来1天)

我当前的代码如下。月份结束日期的格式如下2016-07-02

Sub Macro1()
With ActiveWorkbook.Connections("ABC Query").ODBCConnection
    .BackgroundQuery = True
    .CommandText = Array( _
    "exec [dbo].[getBSC_Monthly] @MonthEndDate = **where I need the line of code**")

Weekday()函数会告诉你一周中的当前一天是什么(Sun=1,Mon=2,等等);4,那么你想要的日期是几天前的Weekday()。如果WeekDay()>=3,那么您希望未来有7-WeekDay()天。

Function MonthEnd(d)
    Dim actualmonthend, dow, ans
    actualmonthend = DateSerial(Year(d), Month(d) + 1, 1) - 1
    dow = Weekday(actualmonthend)
    If (dow < 4) Then
        ans = actualmonthend - dow
    Else
        ans = actualmonthend + (7 - dow)
    End If
    MonthEnd = ans
End Function

如果你真的只是想要一个表达式,这将起作用:

DateSerial(Year(d), Month(d) + 1, 1) - 1 - Weekday(DateSerial(Year(d), Month(d) + 1, 1) - 1) + (7 * Abs(Weekday(DateSerial(Year(d), Month(d) + 1, 1) - 1) >= 4))

最新更新