Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / (VBA EXCEL) Коллекция с ключом / 4 сообщений из 4, страница 1 из 1
16.06.2010, 15:17
    #36690267
(VBA EXCEL) Коллекция с ключом
Как проверить есть-ли в коллекции элемент с определённым ключом?
Пишу:
Код: plaintext
1.
2.
3.
4.
If IsEmpty(by_ISA.Item(CStr(Group_value))) Then
 MsgBox "Already defined!"
Else
 by_ISA.Add Check_values(i).Value, CStr(Group_value)
End If
Ругается на условие:
"Invalid procedure call or argument!"
...
Рейтинг: 0 / 0
16.06.2010, 15:58
    #36690413
(VBA EXCEL) Коллекция с ключом
Дмитрий-(сколько-же-нас?),

Во-первых, CStr() не гарантия, что Item() воспримет параметр не как числовой (IsNumeric(CStr("1"))=True); но это к слову. Также к слову, заведите маленькую такую функцию CKey(), возвращающую (не преобразующийся к числовому) ключ, и используйте её вместо CStr().
Во-вторых, стандартная практика проверки наличия элемента в коллекции - обработка ошибки.
В-третьих, вместо VBA.Collection можно воспользоваться Scripting.Dictionary, в нём (этом классе) есть метод Exists().
...
Рейтинг: 0 / 0
16.06.2010, 16:49
    #36690592
(VBA EXCEL) Коллекция с ключом
Спасибо, за помощь!
Буду пробовать...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.09.2012, 15:39
    #37974713
avtor_1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(VBA EXCEL) Коллекция с ключом
может поможет
dim rstcoll as new Collection
On Error Resume Next
If rstcoll.Count = 0 Then

rstcoll.Add item:=item:=element, Key:=klych

Else
x = rstcoll(klych) ' если елемента в колекции нет строка вернет ошибку и дальше код ошибки запишеться в переменную z
z = 0
z = Err.Number
On Error GoTo 0
If z > 0 Then

rstcoll.Add item:=item:=element, Key:=klych

Else

End If
End If
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / (VBA EXCEL) Коллекция с ключом / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]