2016-11-27 45 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

相關問題