Проверка #N/A в ячейке Excel из кода VBA

Я перебираю диапазон ячеек,которые содержат числа с 2 десятичными знаками. Мне нужно проверить, содержит ли ячейка "#N/A", и если да, мне нужно пропустить ее. Проблема в том, что когда ячейка содержит допустимое число, мое условие if ниже выдает "ошибку несоответствия типа". Как мне этого избежать?

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

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