【问题标题】:Save a file as the previous weekday's date将文件另存为上一个工作日的日期
【发布时间】:2018-07-08 06:24:50
【问题描述】:

我需要将文件保存为上一个工作日的日期。在星期一,我需要将文件保存为星期五的日期。

这是我所拥有的:

If FileDate = Weekday(Date, vbMonday) Then Format(DateAdd("d", -3, Date)) = "yyyymmdd" Else FileDate = Format(DateAdd("d", -1, Date), "yyyymmdd")

即使在星期一,这也会吐出 date-1。

【问题讨论】:

    标签: excel vba if-statement dateadd weekday


    【解决方案1】:

    编辑:有人指出我在 Weekday 函数结构上犯了一个错误。将“= 1”添加到初始 if 条件。

    早上好kms5549。刚刚测试了这个,它似乎吐出了正确的一天。希望这会有所帮助,

    Dim fileDate As String
    
    If Weekday(Date, vbMonday) = 1 Then
        fileDate = Format(DateAdd("d", -3, Date), "yyyymmdd")
    Else
        fileDate = Format(DateAdd("d", -1, Date), "yyyymmdd")
    End If
    

    【讨论】:

    • @Vityata - 你完全正确,我很抱歉。我误解了方程结构......我很傻。好吧,现在我学会了。 Weekday(Date, "一周的第一天") 它返回当天的#of。即,如果您从星期一开始一周 - 使用 vbMonday,那么星期一返回 1,星期二返回 2,依此类推。
    • @Vityata 已编辑,谢谢。
    【解决方案2】:

    像这样试一试。它将打印文件的正确名称:

    Public Sub TestMe()
    
        Dim fileDate    As String
    
        If Weekday(Date, vbMonday) = 1 Then
            fileDate = Format(DateAdd("d", -3, Date), "yyyymmdd")
        Else
            fileDate = Format(DateAdd("d", -1, Date), "yyyymmdd")
        End If
    
        Debug.Print fileDate
    
    End Sub
    

    【讨论】:

    • 这并不适用于所有情况。根据您的日期设置,星期一有时是一周的第一天,有时是第二天。
    • @sam - 你能不能试着改变你自己的电脑,将星期一设置为一周的第二天,然后尝试运行代码并告诉我你得到了什么?
    • 尝试在第二个参数中使用不同的值运行 Weekday 函数。
    • @sam - 我为什么要把vbMonday 改成别的东西?它迫使 VBA 认为星期一是我一周的第一天。
    猜你喜欢
    • 2020-10-18
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多