月结束日期VBA
问题描述:
我需要帮助在VBA中编写一行代码来返回月末结束日期。对于月 - 终止日是这样的逻辑...月结束日期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,星期一= 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))
+0
我在追随,这是完全意义上的。是的,可以写一个函数。它不一定需要是1表达式。我只是认为它可以完成,但绝对没有必要 – Davey
的[Excel VBA中的给定日期和(给定的日期 - 12月)之间的比较]可能的复制(HTTP://计算器问题/ 34427121/excel-vba-comparison-between-given-date-and-given-date-2-months) – Comintern
它可能有点重复,但我仍然对它感到困惑。努力尝试了解它 – Davey