【问题标题】:Checking for #N/A in Excel cell from VBA code从 VBA 代码检查 Excel 单元格中的#N/A
【发布时间】:2011-07-05 19:55:58
【问题描述】:

我正在遍历一系列包含小数点后 2 位数字的单元格。我需要检查单元格是否包含“#N/A”,如果是,我需要跳过它。问题是,当单元格包含有效数字时,我的 if 条件会引发“类型不匹配错误”。我怎样才能避免这种情况?

If (ActiveWorkbook.Sheets("Publish").Range("G4").offset(offsetCount, 0).Value <> CVErr(xlErrNA)) Then
'do something
End If

【问题讨论】:

  • 不好意思,问的太仓促了。将表达式的 LHS 转换为 CVErr 可以修复它。
  • 如果您不关心具体的错误类型,也可以使用 IsError(rg)。

标签: excel vba


【解决方案1】:

首先检查错误(N/A 值),然后尝试与 cvErr() 进行比较。您正在比较两个不同的事物,一个值和一个错误。这可能有效,但并非总是如此。简单地将表达式转换为错误可能会导致类似的问题,因为它不是真正的错误,只有取决于表达式的错误值。

If IsError(ActiveWorkbook.Sheets("Publish").Range("G4").offset(offsetCount, 0).Value) Then
  If (ActiveWorkbook.Sheets("Publish").Range("G4").offset(offsetCount, 0).Value <> CVErr(xlErrNA)) Then
    'do something
  End If
End If

【讨论】:

  • 还有 Application.IsNA,你可以这样使用:'If Application.IsNA(ActiveWorkbook.Sheets("Publish").Range("G4").offset(offsetCount, 0)。值)然后'
  • 在 excel 2010 @jtolle 中找不到 Application.IsNA()
  • @pablete:就在那里!您可以使用Application.IsNA()(不会出现在VBA 的小自动完成建议中)或Application.WorksheetFunction.IsNA(),它会。例如,在“立即”窗口中尝试:?application.isna([na()])。你应该回来True
  • 啊,好的,现在可以了(不显示在自动完成功能上),非常感谢。
猜你喜欢
  • 2013-07-09
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多