У меня есть следующее If
-Statement:
If wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na" Then
wb.Range("A2").Value = "-"
Else
...
End
Это работало нормально, пока A1
не содержит #NV
(ошибка, это не строка), а код выдал мне ошибку 13 ( несоответствие типов). Я попытался просто сделать это:
If IsError(wb.Range("A1").Value) = True Or wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na" Then
wb.Range("A2").Value = "-"
Else
...
End
Но, опять же, несоответствие типов.
Если я разделю это так, это сработает:
If IsError(wb.Range("A1").Value) = True Then
wb.Range("A2").Value = "-"
ElseIf wb.Range("A1").Value = "n/a" Or wb.Range("A1").Value = "na" Then
wb.Range("A2").Value = "-"
Else
...
End
Это приведет к пару вопросов для меня:
Возможно ли это как-то обработать ошибку, как я пытался во втором фрагменте кода, без elseif
и только с одним If
утверждением?
Почему If IsError(wb.Range("A1").Value) = True Or wb.Range("A1").Value = "n/a"
не работает? VBA одновременно просматривает все Or
условия, и одно из них возвращает ошибку, поэтому весь оператор If
делает то же самое?