Как получить индекс поля со списком в электронной таблице Excel с помощью VBA? - PullRequest
1 голос
/ 13 июля 2010

У меня есть файл Excel 2003.На первом листе я поставил поле со списком.После этого я назначаю макрос для обработки события изменения.Макрос находится модуль в окне Project Explorer редактора VB.В макросе я хочу написать несколько строк, чтобы получить индекс выбранного элемента списка со списком.Что я должен написать?

Я написал строку

If ActiveSheet.cbFilter.Index = 1 Then

, но ошибка продолжала вызывать ошибку (имя поля со списком "cbFilter")Сообщение об ошибке «Объект не поддерживает это свойство метода».Пожалуйста, помогите мне.

Большое спасибо заранее,

Харис

Ответы [ 3 ]

1 голос
/ 06 мая 2013

Попробуйте удалить «ActiveSheet».часть утверждения, я предполагаю, что комбо уже находится внутри этого листа.

Источник: Опыт

С уважением

0 голосов
/ 06 мая 2013

Попробуй это.Если вы посмотрите в Обозреватель объектов, cbFilter объект является свойством sheet1 и может быть указан как модуль ниже.

MsgBox Sheet1.cbFilter.ListIndex

 If Sheet1.cbFilter.ListIndex = 1 Then

enter image description here

0 голосов
/ 13 июля 2010

Вы добавили элементы в свой список со списком?

попробуйте эти фрагменты кода в своем отладчике: сначала один раз вызовите Preload (), затем выберите что-нибудь из комбо, затем запустите Readout () .... это должно дать вам подсказку.

Sub Preload()
   ActiveSheet.ComboBox1.AddItem "111"
   ActiveSheet.ComboBox1.AddItem "222"
   ActiveSheet.ComboBox1.AddItem "333"
End Sub

Sub ReadOut()
    ActiveSheet.[A1] = ActiveSheet.ComboBox1.ListIndex
    ActiveSheet.[A2] = ActiveSheet.ComboBox1
End Sub

также вам следует проверить, что вы создали ссылку на библиотеку объектов MSForms 2.0 (FM20.DLL - или аналогичную)

EDIT:

Я только что проверил случай пустого Combo ... индекс будет -1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...