月结束日期VBA

时间:2016-07-27 21:12:04

标签: vba excel-vba date dynamic excel

我需要帮助在VBA中编写一行代码以返回月末结束日期。月末结束日期的逻辑就像这样......

如果该月的最后一天结束......

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

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

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

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

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

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

我目前的代码如下。月末结束日期的格式如下。的 2016年7月2日

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

1 个答案:

答案 0 :(得分:-1)

Weekday()函数会告诉您当周的当天是什么(Sun = 1,Mon = 2等)。所以,如果Weekday()< 4,那么你想要的日期是Weekday()天前。如果WeekDay()> = 3,那么您希望将来有7个工作日()天。

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))

如果你真的只想要一个表达式,那就可以了:

{{1}}