У меня есть два поля со списком в электронной таблице Excel. Содержимое поля со списком 2 зависит от выбора в поле со списком 1.

Вот что у меня есть для кода в поле со списком 1:

Private Sub cboLine_DropButtonClick()
    Dim item_row, combo_item, list_sheet As Worksheet
    Set list_sheet = Worksheets("Lists")
    Me.cboLine.Clear
    item_row = 1
    Do
        item_row = item_row + 1
        combo_item = Application.WorksheetFunction.HLookup("Lines", list_sheet.Range("A1:Z10400"), item_row, False)
        If Len(combo_item) > 0 Then Me.cboLine.AddItem combo_item
    Loop Until Len(combo_item) = 0
End Sub

И вот что у меня в поле со списком 2:

Private Sub cboMachine_DropButtonClick()
    Dim item_row, combo_item, list_sheet As Worksheet
    Set list_sheet = Worksheets("Lists")
    Me.cboMachine.Clear
    Dim line_name
    line_name = Me.cboLine.Value

    If Len(line_name) = 0 Then
        MsgBox ("Please select Line.")
    Else:
        line_name = line_name & " Machines"
        item_row = 1
        Do
            item_row = item_row + 1
            combo_item = Application.WorksheetFunction.HLookup(line_name, list_sheet.Range("A1:Z10400"), item_row, False)
            If Len(combo_item) > 0 Then Me.cboMachine.AddItem combo_item
        Loop Until Len(combo_item) = 0
    End If 
End Sub

Первое поле со списком показывает правильные элементы списка, но остается пустым после выбора. Из-за этого второе поле со списком не может получить правильное значение от первого.

Как правильно инициализировать поля со списком в VBA? Где должна быть выполнена инициализация, в combobox_DropButtonClick() или combobox_Change()?

1 ответ1

0

Замените событие Click событием ComboBox Change, или вместо ComboBox вы также можете использовать Надежный выпадающий список . Он будет работать таким же образом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .