查找返回#ERROR的公式的单元格

时间:2016-11-27 11:21:58

标签: excel vba excel-vba

我的问题是 - 我有一个用数学公式填充页面的宏。对于某些单元格,公式给出了错误值。我想检查整个页面,每当错误发生时,我想将错误值换成0。

我的宏正在关注,我不知道我错过了什么才能让它发挥作用:

sub check() 

For q = 2 To 321
    For j = 24 To 81
        A = WorksheetFunction.Type(Cells(q, j))
    If A = 16 Then Cells(q, j) = 0
    Next j
Next q 

End sub

感谢您的任何建议。

3 个答案:

答案 0 :(得分:2)

Type不是WorksheetFunction对象的成员。我很惊讶您没有报告错误消息。

如果您想使用Type功能,则需要将其嵌入Evaluate声明中。

或者您可以使用VBA IsError功能。

下面的代码行检查当前单元格是否有错误:

If IsError(Cells(q, j)) Then Cells(q, j) = 0

答案 1 :(得分:2)

我认为SpecialCells()在这里非常方便

Range("X2:CC321").SpecialCells(xlCellTypeFormulas, xlErrors).Value = 0

答案 2 :(得分:1)

Excel在IFERROR()函数中有另一种选择。

将您的数学公式设为A2 = 5/A1。如果A1为0,则该公式将返回错误,但如果您将其更改为A2 = IFERROR(5/A1, 0),则A2的结果为5/A1时将为0。< / p>

查看https://msdn.microsoft.com/pt-br/library/ee634765(v=sql.120).aspx以查看IFERROR功能的文档。

我看到它的方式,更改填充公式的宏比创建一个宏来做更好的内容有更好的内容函数。