ListIndex текущего значения комбобокса без выделения - PullRequest
3 голосов
/ 22 июля 2010

В VBA свойство ListIndex в Combobox показывает индекс (начиная с 0) элемента, выбранного в общем списке (массиве) значений в Combobox.Он показывает -1, если выбор не сделан.

Когда я поднимаю лист в Excel с Combobox и последним значением в нем, он получает ListIndex, равный -1, вместо фактического ListIndex.элемента.

В чем заключается хитрость в VBA для быстрого получения ListIndex текущего невыбранного значения?

Я знаю, что могу вручную проверить массив (свойство .List), но я надеюсь, что у VBA есть более быстрый способ сделать это.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Из справки VBA для свойства ListIndex :

Свойство ListIndex содержит индекс выбранной строки в списке.Значения ListIndex варьируются от –1 до единицы меньше, чем общее количество строк в списке (то есть ListCount - 1).Когда строки не выбраны, ListIndex возвращает -1.Когда пользователь выбирает строку в ListBox или ComboBox, система устанавливает значение ListIndex.

Поэтому я предполагаю, что вы ничего не выбираете, а пытаетесь прочитать выбранное значение.Это может объяснить, почему ListIndex возвращает -1.

0 голосов
/ 25 апреля 2018

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

        Dim dst As Worksheet: Set dst = Worksheets("MyData")
        MsgBox (dst.OLEObjects("combobox1").Object.ListIndex)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...