首页 > 解决方案 > 日期比较问题 VBA

问题描述

我正在尝试比较 vba 脚本中的日期。我相信主要问题是我的格式,但我不知道如何解决它。

Sub Rem9()
Dim i As Long
Dim lr As Long
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
 wsName = ws.Name

 lr = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

  FirstDateRead = CDate("1, 1,2018") 'Initialize the first Day of the year as the last day

For i = 1 To lr
Debug.Print FirstDateRead
Debug.Print ws.Cells(i, 1).Value

 If FirstDateRead > ws.Cells(i, 1).Value Then
               ws.Cells(i, 3).Value = 121325

End If

Next i
End Sub

根据我的输出,First Date Read 永远不会大于我要提取的值,这适用于所有情况。我在这里包含了我正在运行的脚本中的 debug.print 示例,以显示日期格式。此外,我想确认我从中提取的值确实是 datevaluse,因为当我通过 IsDate() 函数运行它们时,它返回 True。在此处输入图像描述

如果我调用的值的日期格式是交换年份和日期,则另一个问题是。有谁知道如何解决这个问题。当我使用格式函数时,它将日期返回为。在此处输入图像描述

标签: vbaexcel

解决方案


尝试使用该DateDiff功能:

Sub dateDifference()

    Dim d1 As Date, d2 As Date

    d1 = CDate("1, 2,2018")
    d2 = Range("A1").Value ' insert a date in A1 to test

    Debug.Print DateDiff("d", d1, d2) ' first parameter set to days

End Sub

编辑#1

用来Format比较苹果和苹果,可以这么说:

d2 = Format(Range("A1").Value, "dd/mm/yyyy")

推荐阅读