Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Обработка ошибки 457 при добавлении элемента в коллекцию
 
Всем доброй ночи!
Подскажите, возможно ли обработать ошибку 457, дело в том, что я добавляю в коллекцию элементы и когда повторяющийся элемент туда хочет добавиться появляется ошибка, я пишу

Код
On Error GoTo line2
ColT.Add 5,5
line2:
но ошибка по прежнему повторяется..
 
Можно так проверять.
Код
Dim Key As String
Key=5
if not Exists(Key,ColT) then  ColT.Add 5,Key
'=========================================

 Function Exists(Key As String,Col as collection) As Boolean
   On Error Resume Next
   Exists = TypeName(Col.Item(Key)) > ""
   err.clear
End Function
 
Вместо
Код
ColT.Add 5, 5
используйте
Код
ColT.Add 5, CStr(5)
Чем шире угол зрения, тем он тупее.
 
Не понятно зачем вообще там это всё...
Код
On Error resume next
ColT.Add 5,"5"
line2:
 
ALFA, но ошибка по прежнему повторяется..[/QUOTE]Basic предполагает, что на метке line2 начинается обработчик ошибки. Он должен завершаться оператором Resume или выходом из процедуры. Если в обработчике ошибок возникает ошибка, она уже не обрабатывается *) и происходит останов. Это и происходит у Вас при следующем повторяющемся элементе, т.к. Basic не встретил оператор Resume и считает, что работает обработчик ошибок. Простейший обработчик ошибок должен выглядеть так:
Код
On Error GoTo line2 'вне цикла
For Each x In Array(1, 2, 1, 5, 5)
  ColT.Add x, CStr(x)
nxt: Next
On Error GoTo 0
'...
Exit Sub

line2: Resume nxt
End Sub

*) Для обработки ошибок в обработчике ошибок можно использовать оператор On Error GoTo -1
 
Doober, Ваш вариант успешно подошел, работает, Спасибо!
Казанский, Ваш еще не опробовал)
SAS888, Изменение типа ключа не помогло

Цитата
Hugo написал:On Error resume next
ColT.Add 5,"5"
line2:
не подходит, так как если ключ уже существует в коллекции мне необходимо было перейти в определенный участок кода, видимо я привел не совсем подходящий пример( Необходимо было в случае ошибки перейти не к следующему элементу а именно перепрыгнуть на line2:

Всем спасибо за предложенные варианты решения!
Страницы: 1
Читают тему (гостей: 1)