【问题标题】:Combobox Dependant on Checkbox组合框依赖于复选框
【发布时间】:2014-08-17 12:12:02
【问题描述】:

我已经能够根据是否使用以下代码选择了选项框来更改组合框的列表(或RowSource):

Private Sub optYes_Click()
    Options
End Sub

Private Sub optNo_Click()
    Options
End Sub

Private Sub Options()
    Select Case True
        Case optYes.Value = True
            cmb.Enabled = True
            cmb.RowSource = "=Options!A1:A4"
        Case optNo.Value = True
            cmb.Enabled = False
    End Select
End Sub

我想稍微修改一下,以便组合框列表仅限于一组已选中的复选框。因此,如果我有 10 个表示不同选项的复选框,而用户只选择其中 4 个,那么只有这 4 个会出现在 Combobox 中。

【问题讨论】:

    标签: forms excel vba checkbox combobox


    【解决方案1】:

    我会这样做:

    Private Sub Algeria_Change()
        Options
    End Sub
    
    Private Sub Bangladesh_Change()
        Options
    End Sub
    
    Private Sub Canada_Change()
        Options
    End Sub
    
    Private Sub Denmark_Change()
        Options
    End Sub
    
    Private Sub Options()
        Dim names As Variant, name As Variant
        Dim old As String
    
        names = Array("Algeria", "Bangladesh", "Canada", "Denmark")
    
        old = cmb
    
        cmb.Clear
        cmb.Enabled = False
        For Each name In names
            If Me.Controls(name) Then
                cmb.AddItem Me.Controls(name).Caption
                cmb.Enabled = True
                If name = old Then cmb.SelText = old
            End If
        Next name
    End Sub
    

    如果您需要更多复选框,只需将它们的名称添加到 names 并在它们更改时调用 Options

    【讨论】:

    • 谢谢。然而,这个问题在于它本质上选择了 A 列中的前 i 个单元格,而不管这些单元格中的值是什么。因此,如果选择了 3 个复选框,组合框将列出 A 列中的前 3 个单元格,但不一定列出使用复选框选择的值 - 所以如果我从 A、B、C、D 中选择 B 和 D,那么组合框将显示A 和 B,但不是 B 和 D。
    • @user2696883 这正是它的作用:在组合框中显示与所选复选框数量相对应的列 A 的第一行 i,无论其名称如何。
    • 谢谢,但是我希望它显示 那些 的确切值已被选中,而不是与选中的复选框数量相对应的前 i 行。我该怎么做?
    • @user2696883 我不明白,你试过这个例子吗? “那些确切的值”是什么意思?您不想显示单元格的内容吗?
    • 我确实尝试了 @z 的示例。我的意思是说复选框有阿莱格里亚、孟加拉国、加拿大和丹麦的选项,我只选择孟加拉国和丹麦,那么组合框应该只显示这两个国家,而不是阿尔及利亚和孟加拉国,这将是前 2 个列表。
    猜你喜欢
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多