Вернуть выделенный текст из выпадающего списка - PullRequest
6 голосов
/ 06 марта 2012

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

Ссылка: Возвращает текст из выпадающего списка, а не номер индекса

Я не нашел работающего решения на этой странице. Я пробовал такие вещи, как:

ActiveSheet.DropDowns("DropDown1").Value
ActiveSheet.DropDowns("DropDown1").Text
ActiveSheet.DropDowns("DropDown1").SelectedValue
ActiveSheet.Shapes("DropDown1").Value

и т.д.

Ответы [ 3 ]

11 голосов
/ 06 марта 2012

Это вернет текущий выбор из DropDown

Sub TestDropdown()
    Dim ws As Worksheet
    Dim dd As DropDown

    Set ws = ActiveSheet
    Set dd = ws.Shapes("DropDown1").OLEFormat.Object

    MsgBox dd.List(dd.ListIndex)
End Sub

Кстати, присвоение переменной, объявленной как Dim dd As DropDown, даст вам значение intellisense для dd

5 голосов
/ 26 июля 2015

Вы также можете получить имя вызывающего абонента, если макрос вызывается самим выпадающим списком. Таким образом, вам не нужно беспокоиться о переименовании выпадающих списков:)

Sub Dropdown_OnSelect()
    Dim dd As DropDown

    Set dd = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object

    MsgBox dd.List(dd.ListIndex)
End Sub
2 голосов
/ 26 мая 2016

Если вы не можете Dim as DropDown, я обнаружил, что это изменение будет работать.

Sub TestDropdown()
    Dim ws As Worksheet
    Dim dd As Object

    Set ws = ActiveSheet
    Set dd = ws.DropDowns("DropDown1")

    MsgBox dd.List(dd.ListIndex)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...