Получить значение раскрывающегося списка в VBA и получить имя раскрывающегося списка ... нигде не найдено? - PullRequest
8 голосов
/ 30 сентября 2010

Я создал раскрывающийся список, перетащив поле со списком на свой лист с панели инструментов UserForm.Я присвоил ему некоторые значения из некоторых ячеек книги.Теперь я хочу, чтобы некоторый код VBA получил доступ к значению выбранного выпадающего элемента в виде строки.

Мой раскрывающийся список содержит только текст.

Кроме того, как найти имя этого вновь созданного раскрывающегося списка (его нет в свойствах!)?

Ответы [ 4 ]

7 голосов
/ 30 сентября 2010
Dim dd As DropDown
Set dd = ActiveSheet.DropDowns("Drop Down 6") 
Set r = Sheet2.Range(dd.ListFillRange)

Set ddValue = r(dd.Value)

ПРИМЕЧАНИЯ:

  • DropDown не является видимым классом.Вы просто используете его, и он работает.

  • Чтобы найти название выпадающего списка CONTROL (не пользовательская форма), просто посмотрите на
    поле имени в верхнейВ левом углу экрана чуть выше столбца А. Когда вы щелкнете правой кнопкой мыши по своему элементу управления, будет указано имя элемента управления .-

  • В листе 2 находится раскрывающийся список.Поэтому, где бы ни находились данные вашего списка.

    Надеюсь, что это поможет вам всем.

3 голосов
/ 30 сентября 2010

Вот как вы можете получить строку без необходимости знать имя:

Dim DD As Shape

Set DD = ActiveSheet.Shapes(Application.Caller)

MsgBox DD.ControlFormat.List(DD.ControlFormat.ListIndex)
0 голосов
/ 22 мая 2018

Ланс Робертс был почти там. Если вы не знаете название выпадающего меню, которое вызывает подпрограмму, используйте это:

Dim dd as DropDown
Set dd=ActiveSheet.Shapes(Application.Caller).OLEFOrmat.Object

Dim ddVal as String
ddVal=dd.List(dd.ListIndex)

Я использовал это, чтобы создать универсальный саб для формы со многими выпадающими списками.

0 голосов
/ 30 сентября 2010

Это неуклюжий способ сделать это, но он должен работать:

Dim o As Object

For Each o In Worksheets("Sheet1").Shapes
    MsgBox o.Name
Next o

Существует также скрытый DropDowns член коллекции объекта Worksheet, с которым вы можете перебирать.Он найдет элементы, вставленные с панели инструментов Forms, но не найдет элементы, вставленные с панели инструментов Control Toolbox

...