Проблема с раскрывающимся списком элементов управления формами

#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. Прибил его, чувак. Спасибо за вашу помощь, я назначал макрос неправильному выпадающему списку. Ценю вашу помощь. Тоже классное видео. Большое спасибо!