Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Visual Basic Новый топик    Ответить
 Проблема с Remove  [new]
JamesMilner
Member

Откуда:
Сообщений: 27
Добрый день! Возникла проблема с функцией Remove при перемещение данных в коллекцию. Требуется удалить текстовое значение из коллекции, но возникает ошибка несоответствия ранга! С числовым значением всё работает успешно.
В коде это выглядит так:

Dim Buffer As New Collection
Buffer.Remove(3)


В данном случае всё работает успешно

В случае, когда :
Dim t As String
t = "rteterterter"
Buffer.Remove(t)


происходит ошибка.
24 янв 19, 16:23    [21793599]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Remove  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1813
JamesMilner,

а не затруднит привести пример кода ПОМЕЩЕНИЯ данных в коллекцию? Потому что удалять так можно только по ключу. А если t является элементом, а не ключом - то получите ошибку, т.к. такого ключа нет.
Sub test_coll()
    Dim oc As New Collection
    Dim t As String
    t = "rteterterter"
    
    'удаление пройдет успешно, т.к. "4" является ключом коллекции
    oc.Add "1", "4"
    oc.Remove "4"
    'удаление вызовет ошибку, т.к. ключом коллекции является "two", а не t
    oc.Add t, "two"
    oc.Remove t
    'удаление вызовет ошибку, т.к. ключ и элемент совпдают, следовательно t является ключом
    oc.Add t, t
    oc.Remove t
End Sub
24 янв 19, 18:13    [21793720]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с Remove  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1813
JamesMilner
Buffer.Remove(3)
а здесь удаление происходит по индексу. Любое числовое значение в методе Remove воспринимается как индекс, т.к. ключ должен быть типа String.
24 янв 19, 18:14    [21793722]     Ответить | Цитировать Сообщить модератору
Все форумы / Visual Basic Ответить