調用VBA用戶窗體中控件的事件過程(使用類模塊)


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事件等。

原理不解釋

大家自己悟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM