2016-11-27 44 views
0

我的问题在于 - 我有一个用数学公式填充页面的宏。对于某些单元格,公式会给出错误值。我想检查整个页面,每当发生错误时,我想交换错误值0.查找具有返回公式的单元格#ERROR

我的宏是以下,我不知道我失踪,使其工作:

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 

谢谢你的任何建议。

+0

不需要循环,只是用的'Specialcells的_flavours_的一个()Range'对象的''方法(见我的回答) – user3598756

回答

2

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

如果要使用Type函数,则需要将其嵌入到Evaluate语句中。

或者你也可以使用VBA IsError函数。

下面的代码检查行,如果当前单元具有一个错误:

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

一点“累了“今天早上?希望你不介意我添加一些东西 –

+1

@ShaiRado在我的键盘上挂着一只小猫的问题,并在显示器周围追着光标。 :-)谢谢 –

+1

@CMArg这是VBA,不是Excel。语法是** NOT **相同​​。 –

1

Excel有在IFERROR()功能的替代方案。

修成你的数学公式是A2 = 5/A1。如果A1为0,则该公式将返回错误,但如果将其更改为A2 = IFERROR(5/A1, 0),如果5/A1的结果为错误,则A2将为0。

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

我看到它的方式,将更容易改变填充公式的宏,而不是创建一个宏来做一些事情,excel有一个内置函数。

+0

谢谢,我实际上在公式中有“反错误”的情况,但是公式不是太复杂,不能成功转换为宏语言。 –

2

我觉得SpecialCells()是非常方便的在这里

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

@jirijansa,你试过这个吗? – user3598756

相关问题