vba - 在其他子函数中调用对象的事件函数集
问题描述
我在 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 不使用花括号。此代码不会与这些一起编译。VBA 需要Sub
并End Sub
定义程序。
Sub CheckBox1_Click()
if CheckBox1.Value Then
--- Code
end if
End Sub
Sub CheckBox2_Click()
if CheckBox2.Value Then
--- Code
end if
End Sub
Sub RadioButton1_Click()
if RadioButton1.Value Then
--- Code
End If
End Sub
Sub UserForm_Init()
CheckBox1_Click()
CheckBox2_Click()
RadioButton1_Click()
End Sub
注意:如果您的自定义函数UserForm_Init
不在表单的代码模块中,您需要限定过程名称,例如:
Sub UserForm_Init()
UserForm1.CheckBox1_Click()
UserForm1.CheckBox2_Click()
UserForm1.RadioButton1_Click()
End Sub
根据您的实现,可能会出现额外的复杂性,但我希望这可以帮助您入门。
推荐阅读
- r - 用黄土线绘制时间序列
- javascript - 引导选项卡和 C3 图表不兼容
- javascript - Google Cloud / Firebase 函数:await 仅在异步函数中有效
- javascript - 测试用例失败,未定义属性通过道具传递
- excel - 比较两张纸“运行时错误'13':类型不匹配错误出现在比较结束附近
- regex - 如何使用占位符重复现有单词到记事本++中的每一行?
- mongodb - Restheart 聚合:使用 $var 发送动态 $match 查询
- azure-logic-apps - 在逻辑应用中执行 xml 替换操作
- laravel - 我创建了一个主页,它的所有代码都意味着页眉、页脚等我分布在不同的页面中
- html - 使用Bootstrap 4将具有行类的div拉伸到底部