В Excel VBA, если переменная Excel.Range и диапазон, на который она ссылается, удаляется, она теряет свою ссылку.Любая попытка доступа к переменной приводит к Runtime Error 424: object required
.
Dim rng As Range
Set rng = Sheet1Range("A1")
Sheet1.Rows(1).Delete 'Range has been deleted.
Debug.Print rng.Address() 'Any access attempt now raises runtime error 424.
. Есть ли способ проверить это состояние "потерянной ссылки" без обработчика ошибок ..?
Проверка Nothing
, Vartype () и Typename () были бесполезны, потому что переменная все еще является Range.Я буквально прочитал все Excel.Application в браузере объектов, но ничего не нашел.Возможно, я что-то упускаю из виду ...?Например, одна из странных рудиментарных функций из доисторических версий Excel, например, ExecuteExcel4Macro () ..?
Я искал в Google ответ на этот вопрос, но не нашел ничего полезного.
EDIT:
Некоторые спрашивают, почему я пытаюсь избежать обработчика ошибок.Это моя нормальная философия программирования по нескольким причинам:
- Я признаю, что иногда обработчик ошибок является самым быстрым или единственным способом.Но это не самый элегантный способ.Просто кажется, ну ... грубо для меня.Это как разница между белым мытьем заборчика и написанием портрета моей кошки.= -)
- Другая причина, по которой я избегаю обработчиков ошибок, - это образование.Много раз, когда я искал альтернативу, я обнаруживал свойства, процедуры, объекты или даже целые библиотеки, которых я никогда не знал раньше.И при этом я нахожу больше доспехов для пуленепробиваемости моего кода.