Câu hỏi Khởi tạo đúng các hộp combo trong Excel


Tôi có hai hộp kết hợp trên bảng tính Excel. Nội dung của hộp kết hợp 2 phụ thuộc vào lựa chọn trong hộp tổ hợp 1.

enter image description here

Dưới đây là những gì tôi có cho mã trong hộp combo 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

Và đây là những gì tôi có trong hộp kết hợp 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

Hộp kết hợp đầu tiên hiển thị các mục danh sách phù hợp nhưng vẫn trống sau khi lựa chọn. Bởi vì hộp kết hợp thứ hai này không thể có được giá trị đúng từ cái đầu tiên.

Cách chính xác để khởi tạo các hộp combo trong VBA là gì? Trường hợp nên khởi tạo, trong combobox_DropButtonClick () hoặc combobox_Change ()?


0
2018-01-23 03:53


gốc


Tốt hơn, hãy sử dụng sự kiện 'Thay đổi' với ComboBox. Ngoài ra, viết những gì Lỗi mã này đã tạo ra !! - Rajesh S
Bạn có thể đạt được điều tương tự mà không cần sử dụng hộp kết hợp VBA bằng cách sử dụng xác thực dữ liệu và phạm vi được đặt tên. Hạn chế duy nhất sẽ là dữ liệu trong hộp combo 2 sẽ không thay đổi nếu không có mã VBA. - wbeard52


Các câu trả lời:


Thay thế cái Nhấp vào sự kiện với Sự kiện thay đổi ComboBox, hoặc thay vì ComboBox bạn có thể sử dụng Danh sách thả xuống đáng tin cậy cũng thế. Nó sẽ thực hiện theo cách tương tự.


0
2018-01-23 11:00