"Как избежать запуска нескольких экземпляров макроса"

Sub CallBot()
    If Activesheet.Range("A1").Value = 1 Then
        Call Bot
    ElseIf Activesheet.Range("B1").Value = 1 Then 
        Call BotTwo
    End If
    Application OnTime + TimeValue("00:01:00")
End Sub

Это приводит к нескольким экземплярам CallBot Running(looping), но я хочу запускать его каждую минуту только, пожалуйста, помогите

Также попробовал следующий код

Sub CallBot()
    Dim TimeToRun
    If Activesheet.Range("A1").Value = 1 Then
        Call Bot
    ElseIf Activesheet.Range("B1").Value = 1 Then 
        Call BotTwo
    End If
    Application OnTime + TimeValue("00:01:00")
End Sub

Sub Repeat()
    If TimeToRun > 0 Then
        Application.OnTime TimeToRun, "CallBot", False
    End If

    TimeToRun = Now + TimeValue("00:00:20")
    Application.OnTime TimeToRun, "CallBot"
End Sub

1 ответ1

0

Просто установите глобальную переменную, которая отслеживает, запланирован ли запуск бота:

Public botScheduled As Boolean

Sub CallBot()
    If not botScheduled Then
        If Activesheet.Range("A1").Value = 1 Then
            Call Bot
            botScheduled = True
        ElseIf Activesheet.Range("B1").Value = 1 Then 
            Call BotTwo
            botScheduled = True
        End If
    End If
End Sub

Вы не дали код Bot но когда ваш код бота заканчивается, то, где вы можете установить botScheduled = False

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .