Как создать динамический список на основе значений, записанных в выпадающем списке, используя VBA Excel? - PullRequest
0 голосов
/ 19 ноября 2018

enter image description here

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

Я планировал использовать Autofilter для фактическогосделайте это, затем используйте SpecialCells(xlCellTypeVisible) для установки источника строк.

Исходный код Идея:

Private Sub cbxSupplier_AfterUpdate()
Dim Suppler_col As Long
    Supplier_col = ThisWorkbook.Worksheets("Foil Profile").ListObjects("tblFoilProfile").ListColumns("SUPPLIER").Index
    filterRangeFoilProfile.AutoFilter Field:=Supplier_col, Criteria1:=cbxSupplier.Text
    lbxFoilInfoDisplay.RowSource = ThisWorkbook.Worksheets("Foil Profile").ListObjects("tblFoilProfile").Range.SpecialCells(xlCellTypeVisible)
End Sub

Однако моя проблема заключается в том, что метод Rowsource использует строку, предполагающую ссылку на формулу Excelнапример, следующее: lbxFoilInfoDisplay.RowSource ="'Foil Profile'!A1:K5" и вы не можете использовать язык VBA для назначения значений метода источника строк.

Проблема здесь заключается в том, что даже значения между отфильтрованным диапазоном будут использоваться в Rowsource,Обходной путь заключается в том, чтобы скопировать в «лист справки» видимые ячейки таблицы, используя вместо этого SpecialCells(xlCellTypeVisible), но меня беспокоит то, что мне нужно будет очистить весь лист справки в событии After Update для каждоговремя значение комбинированного списка было изменено.

Могу ли я спросить, есть ли более быстрый / простой / более эффективный способ действительно выполнить эту задачу?

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