2015-07-07 4 views
0

Я пытаюсь отфильтровать свою combobox в макросе Outlook. Но я получаю ошибку, как упоминалось в заголовке. Не могли бы вы помочь мне решить эту проблему? Он работает в Visual Studio, но не работает в Outlook Macro.Метод или данные Участник не найден Ошибка

Private Sub cmbProjects_Change() 
    Dim SelectedText As String 
    SelectedText = cmbProjects.text 

    Dim Items As Object 
    Items = CreateObject("System.Collections.ArrayList") 

    Items = cmbProjects.Items 

    Dim newList As Object 
    newList = CreateObject("System.Collections.ArrayList") 
    For Each Item In Items 
     If Item.Contains(SelectedText) Then 
      newList.Add (Item) 
     End If 
    Next 

    cmbProjects.DataSource = newList 
End Sub 
+0

Можете ли вы обновить код, указывающий на строку, в которой вы получите сообщение об ошибке? – bonCodigo

+0

** Items = cmbProjects.Items ** Я получаю прямо здесь – onurcan

+0

Вам нужно добавить ключевое слово ** Установить ** в начале. –

ответ

0

Необходимо добавить set, так как это ссылка на объект. И вы пытаетесь получить доступ к этому объекту (вы считались ArrayList) его методами/свойствами. Что не удается. Так изменится,

Set Items = CreateObject("System.Collections.ArrayList") 

Set newList = CreateObject("System.Collections.ArrayList") 

Далее проверьте, если у вас есть право ссылки добавлены в редакторе VBA для объектов коллекции библиотеки.

CreateObject("System.Collections.ArrayList") 

В соответствии с моими комментариями, Items = cmbProjects.Items также не с той же ошибкой. That's because cmbProjects doesn't have a method called Items. So you need to use List instead.. List возвращает вариантный объект.

Поскольку вы не можете бросить вариант в ArrayList. Вы должны перебирать вариант и добавлять элементы в ArrayList. Примечание. Я пишу «на лету», код не проверяется. Вы можете проверить это и прокомментировать, если вам нужна дополнительная помощь. Я настоятельно рекомендую вам проверить этот псевдокод против точного синтаксиса.

Dim vr as Variant 
Dim i as Integer 

vr = cmbProject.List 

'--add error handling to check if vr is empty or if cmbProject is empty. 
For i = 0 to UpperBound(vr) 

    Items.Add (vr(i)) 
Next i 
+0

Это не сработало. Тем не менее, я получаю такую ​​же ошибку. – onurcan

+0

Это просто комбобокс. Мне нужно получить его элементы и фильтровать при изменении текста:/ – onurcan

+0

[Вы можете попробовать 'cmbProject.List', это не показывает' Items' как свойство.] (Https://msdn.microsoft.com/ru -us/library/office/ff868268.aspx) Это вполне может быть причиной получения ошибки memeber/method. – bonCodigo

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