2014-10-20 89 views
1

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

例如

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) 

回答

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事件。

+0

感谢您的支持! :) – dunkelme 2014-10-20 16:53:42

1

有点落后,但我发现这是非常简单,并且太棒了!

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

这就是你的ComboBox在UserForm上的情况,就像我的一样。我不想将选中的项作为“------------”作为列表项之间的分隔符。如果它被选中,则UserForm不能被提交。

相关问题