我可以根据另一个 Sub 是否有 运行 来 运行 一个 Sub 吗?
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
事件就会运行并且两者发生冲突。有什么办法可以避免这种情况吗?
使用全局变量允许两个潜艇进行通信:
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:
我们需要让 communication 变量全面可见:
- 在标准模块中调暗它
- 将声明放在模块的顶部
- 声明为 Public
然后应该 "visible" 订阅和活动。查看部分答案Here
已解决!
如果我打开了其他 excel 文件的混合物,我的 Workbook_Open 代码将无法运行。它与您阅读的有关此问题的条件格式无关。我真的不确定这是怎么解决的,因为我尝试了 .activate 和 EVENT 时间延迟,但是当故障出现时,这些都不起作用。在此示例中,我从未打开 MSG 框来确认 re-运行 是否成功,但是通过添加以下代码已解决该问题。只需在我放置“评论部分
的地方替换你的代码
/代码
Public ImDone As Boolean
Public 子 Workbook_Open()
ImDone = 真
'运行代码
结束子
Public Sub BoolCheck()
如果 ImDone = True 那么
MsgBox "代码有 运行"
别的
'重新运行代码
结束子
/代码
我有一个带有两个文本框的用户表单,用于根据任一文本框中的值搜索工作表。表单根据活动单元格填充其他框。
每个子如何检查另一个是否已执行?
伪代码:
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
事件就会运行并且两者发生冲突。有什么办法可以避免这种情况吗?
使用全局变量允许两个潜艇进行通信:
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:
我们需要让 communication 变量全面可见:
- 在标准模块中调暗它
- 将声明放在模块的顶部
- 声明为 Public
然后应该 "visible" 订阅和活动。查看部分答案Here
已解决!
如果我打开了其他 excel 文件的混合物,我的 Workbook_Open 代码将无法运行。它与您阅读的有关此问题的条件格式无关。我真的不确定这是怎么解决的,因为我尝试了 .activate 和 EVENT 时间延迟,但是当故障出现时,这些都不起作用。在此示例中,我从未打开 MSG 框来确认 re-运行 是否成功,但是通过添加以下代码已解决该问题。只需在我放置“评论部分
的地方替换你的代码/代码 Public ImDone As Boolean
Public 子 Workbook_Open()
ImDone = 真 '运行代码 结束子
Public Sub BoolCheck() 如果 ImDone = True 那么 MsgBox "代码有 运行" 别的 '重新运行代码 结束子 /代码