【发布时间】:2014-03-05 09:08:38
【问题描述】:
我正在使用 vba 代码从数组中查找值。一些结果是“#N/A”,单元格左上方会有一个绿色三角形。我想自动删除绿色三角形(忽略错误),但应该保留“#N/A”结果,只需删除绿色三角形即可。
有人知道怎么做吗?
提前致谢。
【问题讨论】:
我正在使用 vba 代码从数组中查找值。一些结果是“#N/A”,单元格左上方会有一个绿色三角形。我想自动删除绿色三角形(忽略错误),但应该保留“#N/A”结果,只需删除绿色三角形即可。
有人知道怎么做吗?
提前致谢。
【问题讨论】:
似乎您一次只能忽略一个单元格,否则它会给您一个应用程序定义或对象定义的错误
所以,你需要这样的东西......
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) 了解所有错误的列表。
【讨论】:
您需要如下所示的代码:
Dim r as Range
...
r.Errors.Item(xlEvaluateToError).Ignore = True
这将清除错误三角形(xlEvaluateToError 等于 1,这就是前一个人的答案中有 Item(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
有关您可以检查或忽略的错误代码的完整列表,请参阅 Errors.Item 属性的 Excel 帮助。
您也可以通过查询.Errors.Item(xlNumberAsText).Value的值(或其他错误码)查看是否发生错误,但不能设置.Value来清除错误。
【讨论】:
如果您希望绿色三角形消失,您需要将 Error.Ignore 属性设置为 true。例如,如果您在单元格 A1 中有一个公式,例如“=1/0”,那么在 VBA 中您可以执行以下操作:
Dim r as Range
Set r = Range("A1")
r.Errors.Item(1).Ignore = True
绿色三角形会消失。
【讨论】:
你可以使用这个公式:
=IFERROR(VLOOKUP([Your Value], [Your Range], [Your Column], FALSE), NA())
【讨论】: