簡體   English   中英

我可以根據另一個 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事件就會運行並且兩者發生沖突。 有沒有辦法防止這種情況?

解決了!

如果我打開了其他 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM