2016-12-13 28 views
0

我有一系列ComboBoxes根據以前的ComboBox選擇填充。因此,例如,根據在ComboBox2中選擇的值填充ComboBox3。填充ComboBox3的「觸發器」是DropButtonClick操作。當ComboBox2中沒有值時,彈出一個消息框。這是成功的 - 代碼如下。「撤消」組合框DropButtonClick

If Me.ComboBox2.ListIndex = -1 Then 
    MsgBox "Please select all preceding comboboxes" 
    ComboBox3.Value = "" 
    Exit Sub 
Else 
    sh.Range("B2") = Me.ComboBox2.Value 
End If 

我的問題是一旦出現Message Box(因爲是在ComboBox2沒有價值的結果)ComboBox3仍顯示落下值。當ComboBox2中沒有值時,是否有辦法撤消ComboBox3 DropButtonClick Event,以便ComboBox3永不落下?

+0

不知道你問究竟。我會在帖子中包含實際的「Private Sub」聲明,以獲取更多的內容;你能否[編輯]澄清你的意思是「逃避」? –

+0

爲了清晰起見編輯的問題。謝謝。 – Chris2015

+1

您可以簡單地禁用ComboBox3,然後使用ComboBox2事件啓用它。 –

回答

1

您可以通過模擬的「ESC」鍵立即關閉組合框的下拉窗口:

MsgBox "Please select all preceding comboboxes" 
    ComboBox3.Value = "" 

    ' close immediately the combo's dropdown window 
    SendKeys "{ESC}{ESC}" 
+1

謝謝,這工作得很好。我添加了一個Exit Sub – Chris2015

0

這是給你的東西嗎?

If Me.ComboBox2.Value = "" Then 
    ComboBox2.SetFocus 
Else 
    sh.Range("B2") = Me.ComboBox2.Value 
End If 

當你想點擊combobox3的dropbutton時,它會自動返回到combobox2。