2015-11-17 13 views
0

У меня есть массив, называемый flArr, и я переношу его в словарь и проверяя элементы из другого массива, если существует, то я добавляю его в список, но я не знаю, как-то он не работает, давая мне "объект требуемой ". Есть идеи?.Словарь VBA, если существует?

Set dic_cc = CreateObject("scripting.dictionary") 
dic_cc = flArr 'transferring array to dictionary 

    For Each f In heArr 'another array heArr   
     If dic_cc.Exists(f) Then Me.FilterList.AddItem f  
    Next 

Благодаря

+0

Вы не можете присвоить массив в словарь, как что - вам нужно перебрать массив и добавить элементы один за другим. –

+0

да, я могу. Я могу зациклиться на dugh_cc и увидеть все элементы этого массива. У меня есть только проблема в этой строке. Если dic_cc.Exists (f) Then Me.FilterList.AddItem f – Shan

+0

Нет, вы не можете. Попробуйте объявить dic_cc 'As Object' и посмотреть, что произойдет. То, что вы делаете в своем текущем коде, присваивает переменной 'dic_cc' массиву' flArr' - в этот момент он перестает быть объектом Dictionary и становится массивом. Это работает только в том случае, если вы объявляете dic_cc как Variant (или, по крайней мере, не как «Object»). –

ответ

0

Я не думаю, что массив в VBA перечисляемость. Вам нужно цикл хотя каждый элемент массива и проверить по словарю, как так:

dim i as long 

For i= 0 to to ubound(myArray) 
If dic_cc.Exists(myArray[i]) then 
    me.FilterList.AddItem myArray[i] 
endif 

next i 
+0

Объявите '' 'Dim ar (от 1 до 3) как Integer''', а затем добавьте в него некоторые элементы. Тогда '' 'For Each it In ar''' действителен и может быть использован. – dee

Смежные вопросы