#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. Не могли бы вы вместо этого использовать условное форматирование?