用于比较包含日期的单元格并将特定文本粘贴到另一列的Vba代码

时间:2017-08-11 09:36:03

标签: excel vba excel-vba

我有点迷失..我正在尝试创建一个宏来比较列AH的单元格和列AH的单元格(BOTH COLUMNS包含DATES),并根据结果,它将打印文本到列AI的细胞。代码在下面..每次我运行它,它说错误13-类型不匹配,它突出显示行" FirstDate = Cells(RowNumber,33)"。能帮我解决这个问题吗?

 Sub Dates()

    Sheets("1").Select
    Dim Result As Long, RowNumber As Long
    Dim FirstDate As Date, SecondDate As Date

    RowNumber = 2

    Do Until Cells(RowNumber, 2) = ""

    FirstDate = Cells(RowNumber, 33)
    SecondDate = Cells(RowNumber, 34)
    Result = DateDiff("n", FirstDate, SecondDate)

    If Result <= 30 Then
    Cells(RowNumber, 35) = "On Time"
    ElseIf Result > 30 Then
    Cells(RowNumber, 35) = "Late"
    End If

    RowNumber = RowNumber + 1

    Loop

    End Sub

1 个答案:

答案 0 :(得分:0)

可能的原因是Cells(RowNumber,33)中的值不是日期。 Excel将日期存储为数字。将Numberformat更改为“General”。如果您在单元格中看到一个数字,那么它就是一个日期。如果你看到文字是文字。如果文本看起来像日期,则Excel可能能够将其强制转换为正确的日期(表示数字)。试试FirstDate = Cdate(Cells(RowNumber, 33).Value)

如果将单元格的数字格式设置为Date,则可以输入短日期(如区域设置中所定义),Excel会将其记录为实际日期(表示为数字)。将日期记录为“真实”日期而不是您可以将其视为日期更好。

反直观的?这是Excel。 : - )