如何控制相互链接的组合框输出?

时间:2016-02-08 09:44:18

标签: vba excel-vba combobox userform excel

我在ComboBox中有两个Userform个。

初始化Combox后,第一个ComboBox1 - Items会更新为Userform,如下所示。

Private Sub UserForm_Initialize()
    With ComboBox1
        .AddItem "A"
        .AddItem "B"
    End With
End Sub

现在,一旦ComboxBox1的值被选中,它就会更新第二个ComboBox - ComboBox2,如下所示 -

Private Sub ComboBox1_Change()    
    With ComboBox2
        .Clear
        .AddItem "P"
        .AddItem "Q"
        .AddItem "R"
    End With
End Sub

更改中的ComboBox2显示其当前值 -

Private Sub ComboBox2_Change()
    MsgBox ComboBox2.Value
End Sub

现在,当我第一次从ComboBox1中选择一个值时,会更新ComboBox2并进一步从CombBox2中选择一个值,我会收到{{1}的弹出消息值--- 这很好

现在我再次从ComboBox2中选择一个不同的值,这次我收到一条空白的弹出消息,(因为它清除了ComboBox1内容)。

我如何处理此问题,因为我不希望ComboBox2弹出窗口更改MsgBox,我只想在弹出时手动选择ComboBox1的值?< / p>

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为一旦ComboBox2有一个值并且您更改了ComboBox1(和.clear组合框2 - 它会更改ComboBox2。只需将它用于combobox2 -

Private Sub ComboBox2_Change()
If ComboBox2.ListCount = 0 Then Exit Sub
    MsgBox ComboBox2.Value
End Sub