从VBA代码中检查Excel单元格中的#N/A.

xbo*_*nez 10 excel vba

我正在迭代一系列单元格,这些单元格包含2位小数的数字.我需要检查单元格是否保持'#N/A',如果是,我需要跳过它.问题是,当一个单元格保存有效数字时,我的if条件会抛出"类型不匹配错误".我怎么能避免这个?

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

use*_*663 16

首先检查错误(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
Run Code Online (Sandbox Code Playgroud)

  • 还有Application.IsNA,您可以使用:'If Application.IsNA(ActiveWorkbook.Sheets("Publish").Range("G4").offset(offsetCount,0).Value)然后' (9认同)
  • @pablete:它在那里!你可以使用`Application.IsNA()`(它不会出现在VBA的小自动完成建议中),或`Application.WorksheetFunction.IsNA()`,这将是.例如,在立即窗口中尝试这个:`?application.isna([na()])`.你应该回到'真实'. (4认同)