[英]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.