比较条件指令(vba)中的两个日期时出错13(类型不匹配)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较条件指令(vba)中的两个日期时出错13(类型不匹配)相关的知识,希望对你有一定的参考价值。

我编写了以下代码来删除工作表2的行,其中第7列(日期)的值小于工作表1的某个单元格的值:

Sub delete()

Dim listaops As Worksheet
Dim RToDelete As Range
Dim DTtoCompare As Date
Dim DTofOp As Date
Dim i As Integer

Set listaops = ThisWorkbook.Worksheets("QryOperacionesComprasyAmort0239")
Set RToDelete = Range("G2", Range("G2").End(xlDown))

DTtoCompare = ThisWorkbook.Worksheets(1).Cells(1, 1).Value

For i = RToDelete.Cells.Count + 1 To 2 Step -1

    DTofOp = listaops.Cells(i, 7).Value

    If DTofOp < DTtoCompare Then
        Cells(i, 7).EntireRow.delete
    End If

Next i

End Sub

当它到达我设置DTtoCompare的指令时:DTtoCompare = ThisWorkbook.Worksheets(1).Cells(1, 1).Value我得到以下内容:

13错误:类型不匹配

我想这是因为变量格式不正确或者没有正确分配给日期格式,我已经尝试了很多事情而没有成功。

谁能帮助我?

答案

如果该值不是日期(例如,今年2月29日未来),则会发生这种情况。您可以在设置类型变量之前使用IsDate对此进行测试。

另一种方法是使用DateDiff,但你最终可能会遇到同样的问题。

更新 一个简单的CDate示例:

Sub Test()
    Dim s As String
    Dim d As Date

    s = "12/12/2017"
    d = CDate(s)
End Sub

以上是关于比较条件指令(vba)中的两个日期时出错13(类型不匹配)的主要内容,如果未能解决你的问题,请参考以下文章

VBA如何判断一个日期是啥星期

delphi日期时间比较大小

尝试从 WPF 中的 Access 数据库中获取给定条件的日期时出错

比较条件跳转指令

在表单的两个日期之间从表单运行查询时出错

取两个日期之间的最小值时出错