如何转换" 12/08/16"日期格式并在VBA中进行比较?

时间:2016-08-12 09:46:36

标签: vba word-vba-mac

我有以下代码,这些代码以前工作得很好,但它现在还没有工作。

以下是将字符串日期转换为日期并与今天的日期进行比较的代码。 代码:

Dim fileDate1 As Date
fileDate1 = CDate("12/08/16")   'dd/mm/yy'
If Format(fileDate1, "yyyymmdd") < Format(Date, "yyyymmdd") Then
    //delete file because date changed
    KillFileOnMac XMLFilePath
End If

有人能告诉我这里我缺少什么吗?

2 个答案:

答案 0 :(得分:4)

Nanji,关于第二行的评论是可疑的,在我的系统上,该行在2012年8月16日设置了fileDate1。使用它会更加安全:

fileDate1 = DateSerial(2016, 8, 12)

(为清楚起见,您可能还会考虑删除对“格式”的调用,只需直接比较日期:If fileDate1 < Date Then...

答案 1 :(得分:1)

看起来你期待cDate(“2016年8月12日”)将等于2016年8月12日。该日期实际上是2016年12月8日。

我们可以告诉:

Dim fileDate1 As Date
fileDate1 = CDate("12/06/16")
MsgBox Format(fileDate1, "yyyymmdd")

显示20161206。

因此,看起来您的日期字符串输入是问题所在。一旦你完成了,就像Mats Lind建议的那样,你不需要格式化日期来比较它们。以下是我将如何处理它:

Dim fileDate1 As Date
fileDate1 = CDate("12/08/16")

If fileDate1 < DateValue(Now) Then

    MsgBox "I shall kill the file because the date changed"
    KillFileOnMac XMLFilePath
Else
    MsgBox "The file date is today or newer "

End If

我使用dateValue(Now),因为它可以跨平台工作。我回避MacScript,因为我不认为它会永远得到支持。 希望这可以帮助。