Я пишу некоторые функции vba. В частности, я переписываю VLOOKUP ... В этом MY_VLOOKUP у меня есть две логические переменные: 1. error_range, это правда, если диапазон, переданный в аргументах формулы, недействителен 2. not_ava, это правда, если там нет результата (результат ВПР будет # N/A)Управление типичными ошибками формулы excel в функциях vba
в разделе обработчика ошибок я написал
Errorhandler:
If error_range Then error_cat = xlErrRef
If not_ava Then error_cat = xlErrNA
Err.Raise error_cat
, но я получаю ошибку «#value» в клетке. При отладке я понял, что err.raise не работает и генерирует ошибку «#VALUE» Как я могу получить ошибку «# N/D» o «#REF» в ячейке?
спасибо! ваши решения дали мне правильный путь. Я не знал, как использовать CVErr. Я решил проблему с этим кодом в разделе обработки ошибок: If error_range Затем error_cat = xlErrRef End If If not_ava Then error_cat = xlErrNA else error_cat = xlErrValue End If my_vlookup = CVErr (error_cat) –
Glad помогать :) –