#excel #vba #combobox #dropdown
#excel #vba #выпадающий список
Вопрос:
У меня возникли некоторые проблемы с созданием зависимого выпадающего списка, в котором на основе значения первого выпадающего списка возвращается либо список, либо возвращается значение:
Мой первый выпадающий список («Выпадающий список 6») состоит из двух вариантов (именованный диапазон)
LU Classification:
CFR
DCR
Код для моего второго выпадающего списка («Выпадающий список 11») приведен ниже:
'Declare variables
Dim wb As Workbook
Dim ws As Worksheet
Dim c_list As Worksheet
'Assign variables
Set wb = ThisWorkbook
Set ws = ActiveSheet
Set c_list = wb.Worksheets("C_List")
'DropDown level 1
Dim dd As DropDown
Set dd = ws.Shapes("Drop Down 6").OLEFormat.Object
'DropDown level 2
Dim dd2 As DropDown
Set dd2 = ws.Shapes("Drop Down 11").OLEFormat.Object
'DropDown level 2 values
With dd2
If dd.Value = 1 Then
dd2.ListFillRange = "LU_BBP"
Else
dd2.ListFillRange = "Packer"
End If
End With
End Sub
Похоже, что мой оператор if не работает, когда должен быть возвращен список, когда я выбираю CFR в первом раскрывающемся списке.
Есть мысли?
РЕДАКТИРОВАТЬ: если я просматриваю строку за строкой в редакторе VBA, выпадающий список обновляется, однако при простом использовании выпадающего списка изменения не переносятся.
Комментарии:
1. да, dd.Значение равно либо 1, либо 2, в зависимости от выбранного CFR или DCR
Ответ №1:
Вам нужно сделать это немного по-другому.
Вставьте этот код в модуль
Option Explicit
Sub DropDown6_Change()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim dd As DropDown
Set dd = ws.Shapes("Drop Down 6").OLEFormat.Object
Dim dd2 As DropDown
Set dd2 = ws.Shapes("Drop Down 11").OLEFormat.Object
If dd.Value = 1 Then
dd2.ListFillRange = "LU_BBP"
Else
dd2.ListFillRange = "Packer"
End If
End Sub
Теперь щелкните правой кнопкой мыши Drop Down 6
и выберите назначить макрос. Назначьте DropDown6_Change
этому выпадающему списку, и все готово 🙂
В действии (демонстрация)
Комментарии:
1. Прибил его, чувак. Спасибо за вашу помощь, я назначал макрос неправильному выпадающему списку. Ценю вашу помощь. Тоже классное видео. Большое спасибо!