【问题标题】:Populate Combobox2 Based on Previous Combobox1 Selection根据先前的组合框选择填充组合框
【发布时间】:2012-11-13 21:56:05
【问题描述】:

我有两个组合框。第一个组合框有三个项目:{One, Tow, Three} 现在我想根据用户在 combobox1 中选择的内容加载第二个组合框。 例如,如果用户在 from combobox1 中选择 One,则 namebox1 将填充到combox2 如果用户在 from combobox2 中选择两个,则 namebox2 将填充到combox2 等等.. 你能告诉我如何在 VBA 中做到这一点吗?

谢谢

这里是更新代码:

    Private Sub ComboBox1_Change()
     Me.ComboBox2.Clear
     Select Case Me.ComboBox1.Value
       Case "One"
        With Me.ComboBox2
            .RowSource = "nameBox1"
        End With
       Case "Two"
        With Me.ComboBox2
            .RowSource = "nameBox1"
        End With
       Case "Three"
        With Me.ComboBox2
             .RowSource = "nameBox1"
        End With
     End Select
    End Sub

请注意,我没有使用 .addItem 来填充 ComboBox1。它已通过相同的方法填充。RowSource 是使用 excel 集合选择框

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    最简单的方法是使用Select Case 语句。 假设你有

    Private Sub ComboBox1_Change()
    
    Me.ComboBox2.Clear
    
    Select Case Me.ComboBox1.Value
        Case "One"
            ' If your data was information you wanted to put in yourself:
            With Me.ComboBox2
                .AddItem "Adam"
                .AddItem "Allen"
                .AddItem "Andy"
            End With
        Case "Two"
            ' If your data existed in a worksheet range
            ComboBox2.RowSource = MyRange.Address            
            End With
        End Select
    
    End Sub
    

    我希望这足以让你继续前进 - 否则,我有点困惑 - 你能解释一下你的问题中 NameBox 的意思吗

    【讨论】:

    • 谢谢约翰,这正是我想要的
    • 好吧,namebox 是我从工作表中获得的范围选择,您可以在此地址找到 Youtube 演示:youtube.com/watch?v=AWWKAWttuiU
    • 你好,约翰我不知道你是否有机会看看你的管,但是当我尝试运行代码时我收到错误消息:Private Sub ComboBox1_Change() Me。 ComboBox2.Clear Select Case Me.ComboBox1.Value Case "one" Me.ComboBox2.Clear ComboBox2.RowSource = "nameBox1" Case "Combat Diseases inc HIV/AIDS" Me.ComboBox2.Clear ComboBox2.RowSource = "nameBox2" End Select End子
    • @user1760110,很抱歉,我无法观看 youtube 视频,但我的 猜测nameBox_XX 是一个工作表范围,如果是这种情况,请尝试例如,将ComboBox2.RowSource = "nameBox1" 更改为ComboBox2.RowSource = Range("nameBox1").Address - 否则,请告诉我您的意思。
    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多