Я пишу макрос для циклического перебора ряда различных электронных таблиц, которые находятся в одном и том же формате друг с другом. Исходные электронные таблицы содержат данные в таблице, которая иногда содержит ошибку #NUM (спасибо, что что-то пошло не так в другой модели!)
Мне удалось учесть все другие типы ошибок и некоторые интересные правила форматирования, используя приведенное ниже с несколькими другими операторами Case:
If IsNumeric(resultsarray(q,p) = false then
Select case ResultsArray(q,p)
Case IsError(ResultsArray(q, p))
ResultsArray(q, p) = 0
Case Left(ResultsArray(q, p), 2) = "0 "
ResultsArray(q, p) = 0
К сожалению, #NUM, похоже, не входит в компетенцию IsError. Кто-нибудь знает, как я могу просто перезаписать ошибку нулем / 0?
Заранее спасибо!! Стеф
Привет, @SolarMike. Я попробовал опцию if, и она оставила меня с ошибкой 2036 и несоответствием типов, что меня смущает, поскольку массив определен как вариант. Рады принять любые другие предложения! Спасибо.
Вы напрямую присваиваете значения ячеек массиву? Если вы добавите часы на resultsarray, то что вы увидите в качестве контента на ячейке #NUM? Показывает значение Error 2036.


Эта ошибка # ЧИСЛО возникает, если введенное число не является допустимым. В вашей ситуации я предлагаю вам проверить, является ли ввод числом или нет, вместо проверки ошибок. Таким образом, вы также можете проверить ошибку #NUM. (Или вы можете сделать и то, и другое) С IsNumeric(<input data here>) вы можете это сделать. Так что просто добавьте еще один футляр (IsNumeric) к выбранному вами футляру.
Привет, спасибо за попытку помочь :) Я уже использовал isnumeric, и поле не прошло этот тест - теперь я добавил это в свой исходный пост. Источник ошибки в исходной электронной таблице - формула, которая затем сохраняет все как (вставить специальное) значение, готовое к экспорту. Я знаю, что должно быть что-то простое, чего мне не хватает, но, хоть убей, я этого не вижу!
Просто используйте if #num then 0 ...