2014-10-20 46 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不能被提交。

相關問題