日期比较问题VBA

时间:2018-05-31 14:54:52

标签: excel vba excel-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。 enter image description here

另一个问题,如果我调用的值的日期格式是交换年和日。有谁知道如何解决这个问题。当我使用format函数时,它返回日期为。 enter image description here

2 个答案:

答案 0 :(得分:0)

请尝试使用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")

答案 1 :(得分:0)

假设包含日期的单元格采用文本格式,请尝试将比较值包装在cDate中:

[]