[英]Can I run a Sub based on whether another Sub has run?
我有一个带有两个文本框的用户表单,用于根据任一文本框中的值搜索工作表。 该表单根据活动单元格填充其他框。
每个子如何检查另一个是否已执行?
伪代码:
Sub StatusTextBox_AfterUpdate()
'Check if TransitTextBox_AfterUpdate() has run
If yes Then End Sub
If No Then Carry on with the rest of StatusTextBox_AfterUpdate()
这将更改TransitTextBox
的值以从工作表中提取,并且我想阻止TransitTextBox_AfterUpdate()
运行。
一旦TransitTextBox
被填充, AfterUpdate
事件就会运行并且两者发生冲突。 有没有办法防止这种情况?
解决了!
如果我打开了其他 excel 文件的鸡尾酒,我的 Workbook_Open 代码将无法工作。 它与您阅读的有关此问题的条件格式无关。 我真的不确定这是如何解决的,因为我尝试了 .activate 和 EVENT 时间延迟,但是当出现故障时,这两个都不起作用。 在此示例中,MSG 框从未打开以确认重新运行是否成功,但是通过添加以下代码解决了该问题。 只需将您的代码替换为我放置“评论”部分的位置
/CODE Public ImDone As Boolean
公共子工作簿_Open()
ImDone = True '运行代码结束子
Public Sub BoolCheck() If ImDone = True Then MsgBox "code has run" Else '重新运行代码 End Sub /Code
使用全局变量来允许两个 sub 进行通信:
Public ImDone As Boolean
Sub ShouldRunFirst()
ImDone = True
End Sub
Sub ShouldRunSecond()
If ImDone Then
MsgBox "first macro has been run"
Else
MsgBox "first macro has not run yet"
End If
End Sub
编辑#1:
我们需要使通信变量全面可见:
然后它应该对潜艇和事件“可见”。 在这里查看一些答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.