VBA UserForm中組合框的Exit事件 聲明格式如下:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
如果要在其他地方調用該事件過程,大家首先想到的是Call ComboBox1_Exit(Cancel:=True)
然而這樣會彈出類型不匹配的對話框。
第一步:向VBA工程插入一個類模塊,命名為ClsReturn,並且書寫如下代碼:
Implements MSForms.ReturnBoolean Private V As Boolean Private Property Get ReturnBoolean_Value() As Boolean ReturnBoolean_Value = V End Property Private Property Let ReturnBoolean_Value(ByVal RHS As Boolean) V = RHS End Property Public Property Get Value() As Boolean Value = V End Property Public Property Let Value(ByVal RHS As Boolean) V = RHS End Property
第二步:向用戶窗體放入一個ComboBox控件、兩個CommandButton控件。
錄入如下代碼:
Private Instance As ClsReturn Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Cancel Then Debug.Print "點擊了第1個按鈕" Else Debug.Print "點擊了第2個按鈕" End If End Sub Private Sub CommandButton1_Click() Instance.Value = True Call ComboBox1_Exit(Cancel:=Instance) End Sub Private Sub CommandButton2_Click() Instance.Value = False Call ComboBox1_Exit(Cancel:=Instance) End Sub Private Sub UserForm_Initialize() Set Instance = New ClsReturn End Sub
啟動窗體,不要碰那個組合框,而是點擊兩個按鈕
你會看到窗體標題變成了:你點擊了第兩個按鈕。
以上做法,還可以應用於其他類型的控件,例如文本框的KeyPress事件等。
原理不解釋
大家自己悟