如何了解下个星期六或当前星期六的日期?
我正在写一些Excel的VBA,我需要找出当前或即将到来的星期六的日期如何了解下个星期六或当前星期六的日期?
因此,如果是星期五,我需要获取明天的日期(星期六)。
如果今天是星期六,那么我只是想要今天的日子。
如果是星期天,那么我需要昨天的日期。
如果是周一然后在下周六
我不知道是否有在Excel或VBA任何可以帮助我完成这个
这是容易理解的,使用vbDays
变量和Select Case
。
一般情况下,你有3个案件 - 今天是星期六,星期日或其他。这些在Select Case中展示。
该函数是日期,因此在Excel中它将被格式化为标准日期结果。
Option Explicit
Public Function SaturdayIsComing() As Date
Select Case Weekday(Now)
Case vbSaturday
SaturdayIsComing = Now
Case vbSunday
SaturdayIsComing = DateAdd("d", -1, Now)
Case Else
SaturdayIsComing = DateAdd("d", vbSaturday - Weekday(Now), Now)
End Select
End Function
如果调用非常接近午夜,则有机会返回错误的值。 – GSerg
在Excel中,你可以使用这个公式:
=TODAY()-WEEKDAY(TODAY())+IF(WEEKDAY(TODAY())>1, 7, 0)
如果您不仅仅使用excel,而且需要其他vba
项目,则会得到您想要的结果。
Private Function saturdayFunction()
Dim dt As String
Dim lpDT As String
lpDT = Format(Now, "yyyy/MM/dd")
If Format(Now, "DDDD") = "Saturday" Then
dt = Format(Now, "yyyy/MM/dd")
ElseIf Format(Now, "DDDD") = "Sunday" Then
dt = Format(Now - 1, "yyyy/MM/dd")
Else
Do While Not dt = "Saturday"
dt = Format(CDate(lpDT) + 1, "DDDD")
lpDT = Format(CDate(lpDT) + 1, "yyyy/MM/dd")
Loop
dt = lpDT
End If
saturdayFunction = dt
End Function
很棒,对工作代码没有任何解释。 – GibralterTop
“工作代码”和“恰好在一台机器上给出正确结果的代码”是完全不同的事情。此代码基本上已被破坏,只能在'en-us'语言环境中使用。它的方法也非常错误,因为它将所有日期存储为字符串,并使用一个循环,而不需要一个循环。 – GSerg
@GSerg很多你的观点更适合https:/codereview.stackexchange.com这不是发布的地方。 OP从未声明区域设置。考虑到该网站的语言以及我看到的大部分问题都是“en-us”格式。我在这里看到没有错。 – GibralterTop
试试这个。使单元格格式为“日期”
=TODAY()+6-WEEKDAY(TODAY(),2)
也许这有助于https://superuser.com/questions/376698/how-to-get-the-dates-of-the-current-monday-wednesday-and-friday-of-the-current – MatSnow