Построение предыдущего вопроса ... Я создал выпадающий список, который успешно добавляет заголовки таблицы в список и выбирает первый элемент. Мне нужно использовать текстовое значение в раскрывающемся списке для изменения формул, но раскрывающееся меню всегда имеет значение 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
Затем у меня есть целое число, которое я могу использовать для ссылки на ячейку, откуда я его вытащил. Он работает для моих нужд, но не уверен, что это лучшее решение.