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

问题描述 投票:0回答:1

我编写了以下代码来删除工作表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错误:类型不匹配

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

谁能帮助我?

vba date if-statement
1个回答
0
投票

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

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

更新 一个简单的CDate示例:

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

    s = "12/12/2017"
    d = CDate(s)
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.