在我給出解決方案之前,我會試着解釋爲什麼會出現這種意外行爲。看來由於一些賽事比賽的狀況。
當某些組合(例如ComboBox1
)打開(下拉窗口打開),然後使用TAB
鍵導航到另一個組合(例如ComboBox2
)時,會發生這種情況。出現競態情況是因爲在內部,ComboBox1
的窗口也會處理按下的鍵,所以它會立即關閉ComboBox2
窗口,因爲在同一個用戶窗體上一次只能打開一個組合。
解決方法是處理KeyUp
事件,這是您的新組合通過TAB導航獲取焦點後發生的最後一個事件。
解決方案
對於每一個組合,添加以下事件處理程序:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then ComboBox1.DropDown
End Sub
Private Sub ComboBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyTab Then ComboBox2.DropDown
End Sub
' similar handlers for ComboBox3, ComboBox4 etc..
這些處理程序是足夠讓你從TAB
導航想要的行爲。如果您在使用鼠標選擇組合時需要相同的行爲,您也可以保持_Enter
處理程序的原樣。
如果您選擇第二個組合框的任何值,則第三個組合框將下拉。這不是你的查詢的解決方案,但它只是建議。 – harun24hr