VBA vbWed Wednesday不工作

问题描述 投票:1回答:1

这一直对我有用,让我得到本周的周四日期。

本周它给了我一些问题,并在上​​周四的周四展示。

有人能帮我理解为什么会这样吗?

Format$(Date - Weekday(Date, vbWednesday) + 2, "m.d.yy") 

提前致谢!

excel vba excel-vba
1个回答
2
投票

一周的第一天与世界各地不同 - 周六,周日或周一:

enter image description here Map from reddit

因此,每当我们编写这样的代码时,我们都应该尝试指定一周的第一天或者处理它。在下面的代码中,我指定本周的第一个是vbMonday(不同于vbSunday默认值):

enter image description here

Public Sub TestMe()

    'Sunday of the current week:
    Debug.Print Date - Weekday(Date, vbMonday) + 0

    'Monday:
    Debug.Print Date - Weekday(Date, vbMonday) + 1

    'Tuesday:
    Debug.Print Date - Weekday(Date, vbMonday) + 2

    'Wednesday:
    Debug.Print Date - Weekday(Date, vbMonday) + 3

    'Thursday:
    Debug.Print Date - Weekday(Date, vbMonday) + 4

    'Friday:
    Debug.Print Date - Weekday(Date, vbMonday) + 5

    'Saturday:
    Debug.Print Date - Weekday(Date, vbMonday) + 6

End Sub

在1月1日之后的前366天检查此模拟。对于每一天,它打印当周的星期四,假设星期一开始。

Public Sub TestMe()

    Dim currentDate As Date
    Dim myDay       As Long

    For myDay = 1 To 366
        currentDate = DateAdd("d", myDay, DateSerial(Year(Date), 1, 1))
        Debug.Print "Today is " & currentDate & " " & _
            WeekdayName(Weekday(currentDate, vbMonday), 1, vbMonday)
        Debug.Print "Thursday is on " & _
            currentDate - Weekday(currentDate, vbMonday) + 4
    Next myDay
End Sub

这是它打印的内容:

Today is 29.12.2018 Sa
Thursday is on 27.12.2018
Today is 30.12.2018 Su
Thursday is on 27.12.2018
Today is 31.12.2018 Mo
Thursday is on 03.01.2019
Today is 01.01.2019 Tu
Thursday is on 03.01.2019

MSDN How to Find the First and Last Day in a Given Week, Month

© www.soinside.com 2019 - 2024. All rights reserved.