我可以根据另一个Sub是否运行来运行一个Sub吗? (EXCEL VBA)

所有,我有一个用户表单,并试图让我的用户使用两个不同的文本框来search基于任一文本框中的值的工作表。 表单根据活动单元格填充其他框。 我的问题是:我可以编写两个子代码来检查另一个是否已经执行? 我的伪代码如下:

>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事件就会运行,两者冲突。 有没有办法防止这种情况?

使用一个全局variables来允许两个子通信:

 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:

我们需要使通信variables在整个董事会中可见:

  • 在一个标准模块中调
  • 把声明放在模块的顶部
  • 宣布公众

那么它应该是“可见的”潜艇和事件。 看到这里的一些答案