我需要帮助在VBA中编写一行代码来返回月底日期。月底日期的逻辑是这样的.
如果这个月的最后一天结束..。
星期日:那么那个月的最后一天就是前一个星期六。(昨天)
星期一:那么那个月的最后一天是上个星期六。(2天前)
星期二:那么那个月的最后一天是上个星期六。(3天前)
星期三:那这个月的最后一天是即将到来的星期六(未来的三天)。
星期四:那这个月的最后一天是即将到来的星期六(未来的两天)。
星期五:那这个月的最后一天是即将到来的星期六(未来的一天)。
我现在的代码在下面。月底日期的格式如下所示。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**")发布于 2016-07-27 21:54:11
Weekday()函数将告诉您一周中当前的一天是什么(Sun=1、Mon=2等)。因此,如果工作日()< 4,那么就需要工作日()前的日期。如果WeekDay() >= 3,那么您希望在未来的7-工作日()天。
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))https://stackoverflow.com/questions/38623269
复制相似问题