空单元格导致类型错误,清除单元格修复程序

时间:2019-06-27 15:04:35

标签: excel vba

我有以下代码,用于检查单元格L是否包含特定字符串,如果不包含,则检查H

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#为空,则Type Mismatch上会出现CDbl(Cells(count, "I"))。但是,我发现如果我进入并清除此单元格的内容,则一切运行正常。但是我不知道为什么这可以解决此问题,因为据我所知,清除它实际上并没有以任何方式改变单元格或其内容。

在清除之前,我已经确认该单元格完全为空(没有空格,什么也没有),并且在清除之后(文本)的格式与之前相同。现在,我添加了以下内容以在运行上述检查之前清除所有单元格,以防止发生错误。

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

1 个答案:

答案 0 :(得分:1)

如果CDbl()的行为不正确,请考虑使用自己的UDF,例如:

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