1

我想根据另一个用户的选择填写一个下拉列表。我正在尝试通过在选择第一个组合框(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_prefRoom1cbo_prefRoom2cbo_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
4

3 回答 3

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
于 2012-10-19T21:48:33.343 回答
1

目前尚不清楚您要达到的目标。如果要清除组合框中的所有条目,请使用此

Do While Me.combo.ListCount > 0
    Me.combo.RemoveItem(0)
Loop
于 2012-10-19T19:38:22.973 回答
1

以下是如何在不使用 VBA 且不使用组合框的情况下实现它。Excel 单元格具有类似于组合框的数据验证功能。由于它是电子表格的一部分,您不必担心大小和定位。

A2在 中使用标签“Park”B2作为输入单元格。将 B2 作为您的活动单元格,转到数据 -> 验证;选择List允许,然后输入Central,East,West源。试试看,看看你是否喜欢你的新下拉菜单。

现在是房间的“诡计”。

  1. 输入. ="LookupRoom!A"&MATCH(B2,lookupRoom!B1:B10,0)&":A"&MATCH(B2,lookupRoom!B1:B10,1)_C2
  2. 再次转到B3我们的数据验证,但这次=INDIRECT($C$2)输入源输入。

尝试一下。现在您有一个响应您的公园选择的下拉菜单。

于 2012-10-21T03:34:34.087 回答