为什么这个昏暗的定义是错误的?

时间:2019-09-27 10:06:50

标签: excel vba runtime-error type-mismatch

我这里有一个代码,需要创建一个按钮,该代码必须清除值2 <和> 20的行中的所有数据,但出现此错误:键入不匹配,错误代码13。运行时中断模式下的代码可以正常工作,这就是我觉得很奇怪的地方,希望你们能帮助我。

Sub ClearData()

Dim myRange As Range
Dim iCell As Range
Dim myValue As Long
Dim MyValue2 As Long

Set myRange = ThisWorkbook.Worksheets("SourceData").Range("D2:D8000")

myValue = 2
MyValue2 = 20

For Each iCell In myRange
     If iCell.Value <= myValue Or iCell.Value >= MyValue2 Or iCell.Value = 
     Zero Then iCell.Clear
Next iCell

End Sub

我认为我对iCell的定义是错误的,但是由于我刚开始使用VBA,所以不知道为什么。

1 个答案:

答案 0 :(得分:0)

查看文档后,问题不在于代码,而在于电子表格中的数据。如注释中所述,该错误发生在单元格D7122中,其值为#DIV/0!错误:“除以零”,因为该公式按范围B中的值进行划分,默认情况下该值未填充为零。您应该将其更改为=IFERROR("Insert your formula here", ""),它将显示空白而不是#DIV/0!,并且不会破坏您的代码。

*编辑为我很愚蠢,没有看到完整的公式。答案已修改。