我希望根据另一个用户选择填写下拉列表。我试图通过在选择第一个组合框(cbo_park)后即时添加项目来更新另一个字段中的内容。
我有四个下拉列表:
第一个下拉列表 cbo_park 有以下选项:
Central
East
West
我有第二个名为 lookupRoom 的工作簿,其中包含下表:
roomCode park
A.0.01 Central
A.2.01 Central
A.3.01 Central
HE.0.10 East
HE.0.21 East
HE.0.22 East
KG.1.07 West
KG.1.09 West
KG.1.10 West
当用户选择第一个下拉列表 cbo_park 下的中央公园选项时,我只希望中心公园中的房间显示在下拉列表中 cbo_prefRoom1 , cbo_prefRoom2 和 cbo_prefRoom3 。我将如何实现这一目标?
请在下面找到我的尝试。我一直收到错误:Me.cbo_prefRoom1.RemoveItem 0
。
Private Sub cbo_park_Change()
Dim lLoop As Long, rgLoop As Range
For lLoop = 1 To Me.cbo_park.ListCount
Me.cbo_prefRoom1.RemoveItem 0
Next lLoop
Sheets("lookupRoom").[a1].CurrentRegion.AutoFilter
Sheets("lookupRoom").[a1].CurrentRegion.AutoFilter Field:=3, Criteria1:=Left(Me.cbo_park.Value, 2)
For Each rgLoop In Sheets("lookupRoom").[a1].CurrentRegion.Offset(1).SpecialCells(xlCellTypeVisible).Columns(1).Cells
If Len(rgLoop) > 0 Then
Me.cbo_prefRoom1.AddItem rgLoop
End If
Next rgLoop
End Sub
答案 0 :(得分:2)
以下是我实现此目标的解决方案。
我重写了包含在一个For
循环中的所有内容,并将其设置为更新两个组合框。
Private Sub cbo_park_Change()
Dim lLoop As Long
'- clear the two comboboxes we are about to update
Me.cbo_prefRoom1.Clear
Me.cbo_prefRoom3.Clear
'- loop through the worksheet and test each row
For lLoop = 1 To Sheets("lookupRoom").Range("A" & Sheets("lookupRoom").Rows.Count).End(xlUp).Row
'- if the row's column C matches the combobox then add the corresponding values to other combos
If Sheets("lookupRoo"m).Range("C" & lLoop).Value = Me.cbo_park.Value Then
Me.cbo_prefRoom1.AddItem Sheets("lookupRoom").Range("B" & lLoop).Value
Me.cbo_prefRoom2.AddItem Sheets("lookupRoom").Range("B" & lLoop).Value
End If
Next lLoop
End Sub
答案 1 :(得分:1)
目前还不清楚你想要实现的目标。如果要清除组合框中的所有条目,请使用此
Do While Me.combo.ListCount > 0
Me.combo.RemoveItem(0)
Loop
答案 2 :(得分:1)
以下是如何在没有VBA且不使用组合框的情况下实现它。 Excel单元格具有数据验证功能,就像组合框一样。由于它是电子表格的一部分,因此您不必担心尺寸和位置。
使用A2
中的标签“Park”,使用B2
作为输入单元格。将B2作为活动单元格,转到数据 - >验证;选择List
表示允许,然后在源中输入Central,East,West
。试一试,看看你是否喜欢新的下拉。
现在为房间“诡计”。
="LookupRoom!A"&MATCH(B2,lookupRoom!B1:B10,0)&":A"&MATCH(B2,lookupRoom!B1:B10,1)
输入C2
。 B3
再次进行数据验证,但这次在源输入中键入=INDIRECT($C$2)
。 试试吧。现在你有一个下拉响应你的公园选择。