Inicialização apropriada de caixas de combinação no Excel

0

Eu tenho duas caixas de combinação em uma planilha do Excel. O conteúdo da caixa de combinação 2 depende da seleção na caixa de combinação 1.

Aquiestáoqueeutenhoparaocódigonacaixadecombinação1:

PrivateSubcboLine_DropButtonClick()Dimitem_row,combo_item,list_sheetAsWorksheetSetlist_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

E aqui está o que eu tenho na caixa de combinação 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

A primeira caixa de combinação mostra os itens da lista correta, mas ainda está em branco após a seleção. Por causa disso, a segunda caixa de combinação não pode obter o valor correto do primeiro.

Qual é a maneira correta de inicializar caixas de combinação no VBA? Onde a inicialização deve ser feita, em combobox_DropButtonClick () ou combobox_Change ()?

    
por user823527 23.01.2018 / 04:53

1 resposta

0

Substitua o Click Event pelo ComboBox Change Event , ou em vez do ComboBox você pode usar Lista Drop-Down Confiável também. Ele funcionará da mesma maneira.

    
por 23.01.2018 / 12:00