Vba 月末日期
我需要帮助在VBA中编写一行代码来返回月末日期。月末日期的逻辑如下所示 如果一个月的最后一天结束于 星期日:那个月的最后一天就是上个星期六。(昨天) 星期一:那个月的最后一天就是上个星期六。(2天前) 星期二:那个月的最后一天就是上个星期六。(3天前) 星期三:那么该月的最后一天就是即将到来的星期六(未来3天) 星期四:那么该月的最后一天就是即将到来的星期六(未来两天) 星期五:那么该月的最后一天就是即将到来的星期六(未来1天) 我现在的代码如下。月末日期的格式如下所示2016-07-02Vba 月末日期,vba,excel,date,dynamic,Vba,Excel,Date,Dynamic,我需要帮助在VBA中编写一行代码来返回月末日期。月末日期的逻辑如下所示 如果一个月的最后一天结束于 星期日:那个月的最后一天就是上个星期六。(昨天) 星期一:那个月的最后一天就是上个星期六。(2天前) 星期二:那个月的最后一天就是上个星期六。(3天前) 星期三:那么该月的最后一天就是即将到来的星期六(未来3天) 星期四:那么该月的最后一天就是即将到来的星期六(未来两天) 星期五:那么该月的最后一天就是即将到来的星期六(未来1天) 我现在的代码如下。月末日期的格式如下所示2016-07-02 Su
Sub Macro1()
With ActiveWorkbook.Connections("ABC Query").ODBCConnection
.BackgroundQuery = True
.CommandText = Array( _
"exec [dbo].[getBSC_Monthly] @MonthEndDate = **where I need the line of code**")
函数的作用是:告诉您一周中的当前日期(Sun=1,Mon=2,等等)。因此,如果Weekday()小于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))