excel - 有没有办法判断当前运行的 Sub 是父级还是被调用的子级
问题描述
我在 VBA 中有可以独立运行或可以由另一个例程调用的例程。当作为子例程(子例程)或主例程(父例程)调用时,我可能会或可能不想执行某些操作。我可以调用 VBA 中的内置函数来告诉我我的执行代码是父代码还是子代码?
我已经创建了全局变量来测试父/子,但我想要一个更优雅的解决方案。
解决方案
我认为一个好方法是为动作本身设置一个过程,该过程具有一个开关(参数)和一个调用它的过程。
Private Sub MyProcedure(Optional ByVal IsChild As Boolean = True) 'set default here
If IsChild Then
'child
Else
'parent
End If
End Sub
现在你可以有一个过程来调用它
Public Sub ParentCallMyProcedure()
MyProcedure IsChild:=False
End Sub
Public Sub ChildCallMyProcedure()
MyProcedure IsChild:=True
'which would be the same as
MyProcedure
End Sub
例如,如果您想MyProcedure
从按钮调用,然后使用
Public Sub Button1_Click()
MyProcedure IsChild:=False
End Sub
在所有其他程序中,只需使用MyProcedure
andIsChild
是默认值True
。
至少这比公共/全局变量更优雅。
推荐阅读
- deployment - 如何获取 AppVeyor webhook 通知的部署编号?
- python - 矩阵中第一行的元素使用每行中的一个元素进行操作,迭代行的所有元素
- reactjs - 如何不在特定页面上显示导航栏?
- python - 如何确保从电子表格中获取的任何数据都没有 xml 内容?
- mongodb - Mongodb $unwind 删除对象。如果 $lookup 没有参考
- sas - 根据另一个变量的值创建变量
- php - 使用 MYSQL 进行 PHP 密码验证
- mongoose - MongoError:不支持聚合阶段:'$changeStream'
- r - glmmLasso 错误“需要数字/复数矩阵/向量参数”
- excel - 使用多个 THEN 语句时返回 FALSE