Не удается получить текстовое значение из выпадающего списка - PullRequest
0 голосов
/ 10 января 2020

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

'earlier in a separate subroutine
Dim combo As Object
Set combo = ThisWorkbook.Sheets("AdvStats").Shapes.AddFormControl(xlDropDown, _
                                          Left:=Cells(1, tCols + 2).Left, _
                                          Top:=Cells(1, tCols + 2), _
                                          Width:=200, _
                                          Height:=Cells(1, tCols + 2).Height)
'some code to populate dropdown
combo.ControlFormat.ListIndex = 1 'this works, thanks @SJR
combo.name = "top25Select"
combo.OnAction = "top25Select_Change"
' end earlier code

Sub top25Select_Change()

    Dim tbl As ListObject: Set tbl = Sheets("AdvStats").ListObjects("AdvStatsTable")

    With tbl.DataBodyRange
        tRows = .Rows.Count
        tCols = .Columns.Count
    End With

    Dim combo As Object
    Set combo = ThisWorkbook.Sheets("AdvStats").Shapes("top25Select")

    Range(Cells(3, tCols + 2), Cells(27, tCols + 2)).Formula = "=Row() - 2"
    'Range(Cells(3, tCols + 3), Cells(27, tCols + 3)).Formula = "=" & howeverIReferenceTheValue & "" 
'this is where i'd like to use the dropdown text value, but combo.controlformat.value is always 0, and list property isn't available

End Sub

При изменении выпадающего меню вызывается top25Select_Change (), просто застрявший при получении текста ценность. Не уверен, что я здесь делаю не так. Любые предложения?

Редактировать: я использовал это в качестве обходного пути:

Dim message As Variant
message = combo.ControlFormat.Value

Затем у меня есть целое число, которое я могу использовать для ссылки на ячейку, откуда я его вытащил. Он работает для моих нужд, но не уверен, что это лучшее решение.

1 Ответ

1 голос
/ 10 января 2020

Комбинированное значение activeX можно вернуть с помощью:

"Your text" =Worksheets("AdvStats").OLEObjects("top25Select").Object.Value

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