Excel VBA中组合框中的不可选项

时间:2014-10-20 15:47:24

标签: excel vba excel-vba combobox

我有一个组合框(在Excel中的用户窗体中),其数据源是带有标题的菜单项(工作表中的命名范围)。现在,我的解决方法是删除这些标题(例如主菜,甜点,饮料等),但我仍然想知道是否可以添加这些不可选择的标题,以便最终用户区分不同的菜单项。非常感谢任何帮助:)

e.g。

Main Courses (**unselectable**)
Roast Beef with Mashed Potato (selectable)
Spicy Spareribs (selectable)
Beef Stroganoff (selectable)
Roast Chicken (selectable)
Desserts (**unselectable**)
Mango Float (selectable)
Brownies (selectable)
Lemon Squares (selectable)

2 个答案:

答案 0 :(得分:1)

有点落后但我发现这非常简单并且效果很棒!

Sub CommandButton1_Click()
     If ComboBox1.Value = "---------------" Then
         Exit Sub
     End If
End Sub

这是你的ComboBox在UserForm上的情况,就像我的一样。我有一个我不想选择的项目" ------------"作为列表项之间的分隔符。如果选中,则无法提交UserForm。

答案 1 :(得分:0)

没有AFAIK,你不能这样做。以下是两种选择。请选择:)

备选方案1

取消选择用户选择相关标题的时刻。例如

Private Sub UserForm_Initialize()
    ComboBox1.Style = fmStyleDropDownList
    ComboBox1.AddItem "---  Main Courses ---"
    ComboBox1.AddItem "Roast Beef with Mashed Potato"
    ComboBox1.AddItem "Spicy Spareribs"
    ComboBox1.AddItem "---  Desserts  ---"
    ComboBox1.AddItem "Mango Float"
    ComboBox1.AddItem "Brownies"
End Sub

Private Sub ComboBox1_Click()
    Select Case ComboBox1.Value
    Case "---  Main Courses ---", "---  Desserts  ---"
        ComboBox1.Value = ""
    End Select
End Sub

备选方案2

使用两个组合框。一个用于标题,另一个用于不同的菜单项。只需根据第一个组合框的选择填充第二个组合框。例如

Private Sub UserForm_Initialize()
    ComboBox1.Style = fmStyleDropDownList
    ComboBox2.Style = fmStyleDropDownList
    ComboBox1.AddItem "---  Main Courses ---"
    ComboBox1.AddItem "---  Desserts  ---"
End Sub

Private Sub ComboBox1_Click()
    ComboBox2.Clear

    Select Case ComboBox1.Value
    Case "---  Main Courses ---"
        ComboBox2.AddItem "Roast Beef with Mashed Potato"
        ComboBox2.AddItem "Spicy Spareribs"
    Case "---  Desserts  ---"
        ComboBox2.AddItem "Mango Float"
        ComboBox2.AddItem "Brownies"
    End Select
End Sub

另外,为了更安全,请使用ComboBox1_Change事件。