Я провел небольшое быстрое тестирование, и я не могу подтвердить , почему работает следующее, но оно работает:
Используйте On Error GoTo -1
вместо Err.Clear
, чтобы очистить ваш Обработка ошибок объекта.
Кажется, что просто использование Err.Clear
не сбрасывает его должным образом, поэтому он не может перехватить ошибку во второй раз.
Сначала я подумал, что это может из-за For Each
l oop, но перезапись тестового кода без al oop не сработала и не переписала его, чтобы не использовать with
.