цикл vba до логического значения false - кнопка пользовательской формы - PullRequest
1 голос
/ 12 марта 2019

Я хочу выполнять подпрограмму снова и снова, пока кнопка установлена ​​в значение true.Моей первой идеей будет цикл while или do while, но я не могу понять, как это делается правильно.В моем случае Excel просто перестает работать.

Кнопка пользовательской формы устанавливает логическое «состояние» true или false при нажатии.Если «status» имеет значение true, подпрограмма должна выполняться в цикле.Сабвуфер сам запускает расчет, который добавляет сумму денег к двойному «банку».Если снова нажать ту же кнопку, цикл должен закончиться.

Function aktivate(i As Integer)
    array(i).status = True
    call myLoop(i)
End Function


Function deaktivate(i As Integer)
    array(i).status = False
End Function


Function myLoop(i As Integer)
    Do While array(i).status = True
        Call calc(i)

        If array(i).status = False Then Exit Do
    Loop
End Function

1 Ответ

1 голос
/ 12 марта 2019

Вам необходимо использовать DoEvents внутри цикла Do While, чтобы вы могли нажать кнопку «Стоп».Если вы этого не сделаете, код перестанет отвечать на запросы и аварийно завершит работу.

См. Этот пример

Dim stopLoop As Boolean

Sub StartCode()
    stopLoop = False
    LoopCode
End Sub

Sub StopCode()
    stopLoop = True
End Sub

Sub LoopCode()
    Do While stopLoop = False
        Debug.Print "blah"
        DoEvents
    Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...