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事件等。
原理不解释
大家自己悟
来源:oschina
链接:https://my.oschina.net/u/4297117/blog/4294471