Подготовка к ячейке. Несоответствие типа ввода значения для «#VALUE!» в макрос Visual Basic

#excel #vba

#excel #vba

Вопрос:

Я реализую макрос Excel в Visual Basic, который окрашивает все ячейки на листе в соответствии с некоторыми правилами, основанными на том, как его значение сравнивает некоторые другие ячейки.

Во время этого я пытаюсь проверить значение каждой ячейки следующим образом:

 Set ActualCell = Cells(RowIndex, 2)

With ActualCell
  If ForceRequiredFormatting And .Value = "" And .Interior.Color <> 255 Then
    .... something
 

Проблема в том, что .Несоответствие типа значения вызывает несоответствие (13), даже когда я пытаюсь прочитать значение (обратите внимание, что я еще ничего не устанавливаю), если я ввожу #VALUE! ячейку.

Почему это? Как я могу подготовиться к этому? должен ли я обрабатывать ошибку с помощью try-catch? Могу ли я проверить некоторые условия ActualCell , чтобы увидеть, можно ли прочитать значение .Value без выдачи ошибки?

Я мог бы проверить .Text == "#VALUE!" , может быть, но я обеспокоен тем, что это только один тип значения ячейки, который нельзя прочитать. Я не эксперт в том, какие другие ошибки Excel могут передавать через эти значения в ячейках.

Комментарии:

1. Я думаю, вам следует прежде всего проверить, содержит ли ячейка ошибку или нет. Проверка функции IsError . Выражения, подобные #VALUE! или #NA!" , на самом деле, являются ошибками, и их следует обрабатывать таким образом, а не как другие строки. Кроме того, что такое ForceRequiredFormatting ? Это UDF? Можете ли вы опубликовать код?

2. из комментария @FoxfireAndBurnsAndBurns вы можете попробовать: CStr(.Value) = "a"

3. Не могли бы вы вместо этого использовать условное форматирование?