簡體   English   中英

月底日期VBA

[英]Month Ending Date VBA

我需要在VBA中編寫一行代碼來返回月底日期的幫助。 月末日期的邏輯如下:

如果該月的最后一天在...

星期日:該月的最后一天是前一個星期六。 (昨天)

星期一:該月的最后一天是前一個星期六。 (2天前)

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

星期三:該月的最后一天是即將到來的星期六(將來3天)

星期四:那么該月的最后一天是即將到來的星期六(將來2天)

星期五:該月的最后一天是即將到來的星期六(將來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()函數將告訴您星期幾(星期日= 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM