Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将文件另存为上一个工作日';日期_Excel_Vba_If Statement_Dateadd_Weekday - Fatal编程技术网

Excel 将文件另存为上一个工作日';日期

Excel 将文件另存为上一个工作日';日期,excel,vba,if-statement,dateadd,weekday,Excel,Vba,If Statement,Dateadd,Weekday,我需要保存一个文件作为前一个工作日的日期。在星期一,我需要将文件保存为星期五的日期 以下是我所拥有的: If FileDate = Weekday(Date, vbMonday) Then Format(DateAdd("d", -3, Date)) = "yyyymmdd" Else FileDate = Format(DateAdd("d", -1, Date), "yyyymmdd") 即使是在星期一,这也会让date-1过期。像这样试试看。它将打印文件的正确名称: Public Sub

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

以下是我所拥有的:

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

即使是在星期一,这也会让date-1过期。

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

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

编辑:有人指出我在工作日函数结构上犯了一个错误。将“=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

这不会在所有条件下都起作用。根据您的日期设置,周一有时是一周的第一天,有时是第二天。@sam-您能试着更改您自己的电脑吗,将星期一设置为一周中的第二天,然后尝试运行代码并告诉我您得到了什么?尝试使用第二个参数中的各种值运行Weekday函数。@sam-为什么我要将
vbMonday
更改为其他值?这迫使VBA认为星期一是我一周的第一天。@Vityata-你完全正确,我道歉。我误解了方程式的结构。。。我真傻。现在我明白了。Weekday(日期,“一周的第一天”),并返回当天的#。i、 e.如果您在周一开始一周-使用vbMonday,那么周一返回1,周二返回2,依此类推。@Vityta编辑,谢谢。