首页 > 解决方案 > 有没有办法在用户窗体上嵌套相关的组合框?

问题描述

我正在尝试在用户表单中设置多个依赖组合框。例如,用户将在第一个组合框中选择一个选项。根据他们的选择,第二个组合框会加载适当的选项。从那里,我有一个选择会导致第三个组合框,而其余的则以第二个框结束。有没有办法做到这一点?我可以使第一部分工作,但不能使第二部分工作。

Private Sub UserForm_Initialize()

Label10.Visible = False
ComboBox3.Visible = False

With RegionBox
    .AddItem "1"
    .AddItem "2"
    .AddItem "3"
End With
End Sub
---------------------------------------------------------------------------

Private Sub ComboBox1_Change()

Dim index As Integer, index2 As Integer

index = ComboBox1.ListIndex
index2 = ComboBox2.ListIndex

BuildingBox.Clear

Select Case index
    Case Is = 0
        With BuildingBox
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
            Select Case index2 'This select case is where doesn't work
                Case 0
                    With HQBox
                        .Visible = True
                        .AddItem "1"
                        .AddItem "2"
                        .AddItem "3"
                    End With
                    Label10.Visible = True
            End Select 
    Case Is = 1
        With BuildingBox
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
    Case Is = 2
        With BuildingBox
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
End Select

End Sub

我希望隐藏第三个框,除非选择组合框 2(第一个)中的选项,触发它显示。到目前为止,根据combobox1的选择正确添加了combobox2中的选择,但是我无法填充combobox3

标签: excelvba

解决方案


负责创建第三个组合框的部分应该在 ComboBox2_Change() 函数中。

Private Sub UserForm_Initialize()

Label10.Visible = False
ComboBox3.Visible = False

With RegionBox
    .AddItem "1"
    .AddItem "2"
    .AddItem "3"
End With
End Sub
---------------------------------------------------------------------------

Private Sub ComboBox1_Change()

Dim index As Integer

index = ComboBox1.ListIndex

BuildingBox.Clear

Select Case index
    Case Is = 0
        With BuildingBox
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
    Case Is = 1
        With BuildingBox
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
    Case Is = 2
        With BuildingBox
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
End Select

End Sub

Private Sub ComboBox2_Change()

Dim index2 As Integer

index2 = ComboBox2.ListIndex

HQBox.Clear
HQBox.Visible = False
Label10.Visible = False

Select Case index2
    Case Is = 0
        With HQBox
            .Visible = True
            .AddItem "1"
            .AddItem "2"
            .AddItem "3"
        End With
        Label10.Visible = True
End Select

End Sub

推荐阅读