2016-12-13 2 views
0

ComboBoxesのシリーズは、前のComboBoxの選択に基づいて作成されています。たとえば、ComboBox3は、ComboBox2で選択された値に基づいて設定されます。 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 

私の問題は、(そこComboBox2には値でないの結果として)Message Box表示されたらあるComboBox3はまだ値をドロップダウン表示されます。 ComboBox2に値がない場合にComboBox3 DropButtonClick Eventを元に戻す方法があるので、ComboBox3は決して降下しませんか?

+0

ないあなたが正確に求めているものを確認してください。より多くの文脈のために私はポストに実際の「プライベート・サブ」宣言を含めたでしょう。あなたが「脱出」することを明確にするためにあなたは編集できますか? –

+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のドロップダウンボタンをクリックすると自動的にcombobox2に戻ります。