vba循环直到boolean为false-用户窗体按钮

时间:2019-03-12 10:47:22

标签: excel vba loops boolean userform

我想在按钮设置为true时一次又一次执行sub。 我的第一个想法是一个while循环或while循环,但是我无法弄清楚它是如何正确完成的。就我而言,Excel只是停止运行。

用户窗体按钮在按下时会将布尔“状态”设置为true或false。如果“状态”为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 个答案:

答案 0 :(得分:1)

您需要在DoEvents循环内使用Do While,以便可以按“停止”按钮。如果您不这样做,那么代码将变得无响应,并导致excel崩溃。

查看此示例

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