【发布时间】:2018-05-29 14:44:34
【问题描述】:
我在 Excel VBA 中有一个用户窗体,其中包含不同的对象,如 CheckBox、RadioButtons、TextEdit Box 等。每个对象都有不同的事件函数,但我想在用户定义的子函数中调用一些事件函数,如 UserForm_Init() 函数按顺序重新利用用它们编写的相同代码。
例子:
Private Sub CheckBox1_Click() [Later changed to public also]
If CheckBox1.Value Then
--- Code
End If
End Sub
Private Sub CheckBox2_Click()
If CheckBox2.Value Then
--- Code
End If
End Sub
Private Sub RadioButton1_Click()
If RadioButton1.Value Then
--- Code
End If
End Sub
' User Defined Function
Sub UserForm_Init()
CheckBox1_Click()
CheckBox2_Click()
RadioButton1_Click()
End Sub
但是当我尝试编译时显示编译错误,如何在用户定义的子函数中执行这些对象事件函数。
我知道我可以在事件函数中编写单独的函数,并为用户定义的子函数调用这些单独的函数。但是在这种情况下,重新更改整个代码将太困难了。我只能选择在子函数中调用这些事件函数来执行。
如何执行这些操作,在用户定义的子函数 [UserForm_Init()] 中调用事件函数?
【问题讨论】:
-
您的代码不是 VBA,如果没有清晰的图片,很难确定您要做什么。 (请参阅“minimal reproducible example”。)现在,请参阅 this search 和 this Stack Overflow question。
-
@ashleedawg 当我选中或启用时,我已经为 CheckBox 和 Radio 按钮编写了代码。所以,下次当我打开相同的用户窗体时,我想运行相同的代码,所以我想通过直接调用事件函数来做到这一点。我无法做到这一点并显示编译错误。
-
如我的回答中所述,正确的做法是将共享代码放在共享模块中。我了解您编写的代码可能需要一些更改,但这是学习过程的一部分。
-
@ashleedwag 对不起,我已经上传了 C 格式的代码。我已经更正了代码