【发布时间】:2016-10-17 10:03:54
【问题描述】:
我正在尝试在 Excel 中编写一个 VBA 脚本,它将保存一个文件并给出一个预先确定的名称。标准之一是,如果它没有超过上午 11 点,那么它应该添加到文件名“H12”中。如果已经过了上午 11 点,则应添加“H16”。
这是我目前所拥有的,关于这个特定部分(还有更多与此处不相关的代码:
Dim SaveTime As Integer
SaveTime = Round(Timer / 3600, 0)
dt = Format(CStr(Now), "yyyy_mm_dd")
FolderName = "path/to/file"
If SaveTime < 11 Then
With Destwb
.SaveAs FolderName _
& "\" & Destwb.Sheets(1).Name & dt & "H12", _
FileFormat:=FileFormatNum
.Close False
End With
Else
With Destwb
.SaveAs FolderName _
& "\" & Destwb.Sheets(1).Name & dt & "H16", _
FileFormat:=FileFormatNum
.Close False
End With
End If
除了这部分之外,脚本工作正常,因为它总是将文件保存为“H16”。 45 分钟前运行这个,它应该写成“H12”。我确定我没有正确地进行时间比较。我试过比较if dt < "11:00",但这也不起作用。
有人可以帮帮我吗?
提前致谢!
编辑:添加最后一个细节。
【问题讨论】:
-
看来这段代码是正确的。为什么你认为你做的不对?
-
因为它总是写 H16 而不是 H12,因为它应该在 45 分钟前完成 :)
-
您在 45 分钟前预计的保存时间值是多少? 11 ?
-
是的。 45 分钟前,系统日期在上午 11 点之前,所以它应该在文件名中添加了文本字符串“H12”,但没有发生。相反,它添加了字符串“H16”。
-
看起来你使用了
Round,而你实际上想用Hour提取小时部分;)
标签: excel vba date-comparison