我的 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
更换点击事件和组合框改变事件,或者你可以使用 ComboBox可靠的下拉列表也一样。它将以同样的方式执行。