空单元引起类型误差,清除单元格的修复



i具有以下代码,该代码要检查单元L是否包含特定的字符串,如果没有,则检查是否H<I.这是在从网络导出的预制电子表格上执行的。

If InStr(Cells(count, "L"), "Apples") > 0 Then
    'stuff
ElseIf CDbl(Cells(count, "H")) < CDbl(Cells(count, "I")) Then
    'stuff
Else
    'stuff
End If

我遇到的问题是,如果找不到Apples并且单元格I#为空,则在CDbl(Cells(count, "I"))上发生Type Mismatch。但是,我发现如果我进入并清除了该单元格的内容,一切都可以。但是我不知道为什么要解决这个问题,因为清除它实际上并没有以任何方式改变单元格或它的内容。

我已经验证了清除之前的单元格是完全空的(没有空间,什么都没有空间(,并且在清除后的格式(文本(之后,格式化相同。目前,我添加了以下内容以在运行上述检查之前清除任何单元格,并防止错误发生。

If Cells(count, "I") = "" Then
    Cells(count, "I").Clear
End If

如果CDbl()行为不端,请考虑使用自己的UDF,类似于:

Public Function cdblx(v As Variant) As Double
    If IsNumeric(v) Then
        cdblx = CDbl(v)
    Else
        cdblx = 0
    End If
End Function

最新更新