Тема: обработка ошибки HandleToObject удаленного примитива

Проблема: отредактировать список хендлов в XRef после редактирования чертежа, т.е. часть примитивов удалена.
Глючный участок такой:

    For i = 0 To UBound(hndlXRef)
        strTmp = hndlXRef(i)
        'проверка наличия примитива по хендлу из hndlXRef
        On Error GoTo Lab10 'для незаписи хендла несуществующего примитива
        Set objTmp= ThisDrawing.HandleToObject(strTmp)
        If IsObject(objTmp) Then        'в принципе строка лишняя
            ReDim Preserve hndlNul(j)   'массив реальных хендлов
            hndlNul(j) = hndlXRef(i)
            j = j + 1
        End If                          'в принципе строка лишняя
Lab10:
    Next i

где hndlXRef - массив хендлов до редактирования, j - индекс сквозной.
Обработчик ошибки нормально срабатывает только на первом хендле отсутствующего примитива, затем на втором хендле отсутствующего примитива вываливает мессагу с -2147467259 на одном компе, или Анкноун Хендл на другом компе вместо того чтоб обработать так же тихо как первый (строка тормоза Set objErr=....).В Хелпе не описано что генерит HandleToObject при ошибке. Подскажите, что может быть не так или как по другому решить задачу.

Re: обработка ошибки HandleToObject удаленного примитива

> Ushi
Вынесите получение объекта по метке в отдельную функцию.

Public Function GetObjectHandle(strHandle As String) As AcadObject
On Error GoTo Exit_Error
Set GetObjectHandle = ThisDrawing.HandleToObject(strHandle)
GoTo Exit_Here
Exit_Error:
Set GetObjectHandle = Nothing
Exit_Here:
End Function

А потом проверяйте:

If Not objTmp Is Nothing then
    'то, чего надо.
end if

Re: обработка ошибки HandleToObject удаленного примитива

Спасибо BP, сейчас разберу твое, но вот до чего дошел сам -> надо изучать язык на котором пишу, все просто, привожу выдержку из какого то учебника:
"Оператор On Error должен заканчиваться Resume или другим оператором завершения обработки ошибок, иначе при компиляции возникает ошибка в структуре программы. Для этого могут использоваться следующие операторы:
-Resume/Resume Next/Resume Label
-Exit sub/ ....
-End/Stop."
Т.е. вместо

     On Error GoTo Lab10
     .....
Lab10:
     .....

можно так:

      On Error GoTo Lab100
      .......
      .......
Lab100:
      Err.Clear: Resume Lab10 

все заработало, хотя, конечно код корявый.
Resume: кривое написание обработчиков - слишком гиморно
Всем привет.