我正在使用vba代碼從數組中查找值。其中一些結果是「#N/A」,單元格左上方會出現一個綠色三角形。我想自動刪除綠色三角形(忽略錯誤),但是應該保留「#N/A」結果,只需要移除綠色三角形即可。Excel宏:忽略錯誤
任何人都知道如何做到這一點?
在此先感謝。
我正在使用vba代碼從數組中查找值。其中一些結果是「#N/A」,單元格左上方會出現一個綠色三角形。我想自動刪除綠色三角形(忽略錯誤),但是應該保留「#N/A」結果,只需要移除綠色三角形即可。Excel宏:忽略錯誤
任何人都知道如何做到這一點?
在此先感謝。
如果您想讓綠色三角形消失,您需要將Error.Ignore屬性設置爲true。舉例來說,如果你有一個公式,如單元格A1「= 1/0」,然後在VBA你可以做這樣的事情:
Dim r as Range
Set r = Range("A1")
r.Errors.Item(1).Ignore = True
和綠色三角形將消失。
可以使用下面的公式:
= IFERROR(VLOOKUP([您的值],[你的範圍],[色譜柱],FALSE),NA())
需要代碼看起來是這樣的:
Dim r as Range
...
r.Errors.Item(xlEvaluateToError).Ignore = True
這將清除錯誤三角形(xlEvaluateToError等於1,這就是爲什麼以前的人有項目:(1)他們的答案)。
可以通過類似的方式清除可能發生的其他錯誤,通過改變項目的數量,例如,我使用的代碼塊像這樣把一個值(即可能看起來像一個數字,但我想,以確保被視爲文本)插入細胞:
With Target_Sheet.Cells(RowNum, ColNum)
.NumberFormat = "@" ' Force the cell to be treated as text
.Value = whatever_value_im_trying_to_set
.Errors.Item(xlNumberAsText).Ignore = True
End With
參見錯誤Excel的幫助。 Item屬性可以查看或忽略錯誤代碼的完整列表。
您還可以查詢.Errors.Item(xlNumberAsText).Value
(或其他錯誤代碼)的值以查看錯誤是否正在發生,但無法設置.Value以清除錯誤。
它好像你只能忽略每次一個單元格或它會給你一個應用程序定義或對象定義的錯誤
所以,你需要這樣的事..
Dim Cell As Range, Target As Range
Set Target = Range("C10:D17")
For Each Cell In Target
Cell.Errors(xlEvaluateToError).Ignore = True
Next
此外,請參閱XlErrorChecks Enumeration (Excel)以獲取所有錯誤的列表。
感謝您的回覆!我嘗試了你的方法,但返回了「應用程序未定義」的錯誤... @ steveo40 – user2774993
如果你將代碼完全複製到一個新的子文件夾中,並將這個可怕的公式彈出到單元格A1中,它應該可以正常工作。 (在新的工作簿中進行。) – steveo40
是否項(1)表示選擇了一個單元格? @ steveo40 – user2774993