【问题标题】:Pausing a VBA loop to allow editing of worksheet, with or without userform暂停 VBA 循环以允许编辑工作表,有或没有用户窗体
【发布时间】:2014-01-29 21:30:31
【问题描述】:

我有一个由多个 dofor 循环组成的过程,我想找到一种简单的方法来“暂停”例程并允许用户编辑工作表,并使用 msgbox 或用户表单来恢复在它停止的地方执行。

我想做这样的事情

dim pause as boolean
pause=false
For i = 1 To 40
    Worksheets("sheet1").Range("A" & i) = i
    If i = 20 Then
        UserForm1.Show vbmodeless
          Pause = true
        Do until pause = false
        loop
    Else

    End If
    Next i


End Sub

暂停条件将由用户窗体上的子设置。这个循环只是崩溃。

理想情况下我希望用户窗体具有可以运行 subs 的按钮,但也允许在执行暂停时直接编辑单元格。

【问题讨论】:

    标签: vba excel userform


    【解决方案1】:

    这是一个典型的控制结构,它允许用户在宏的中间执行一些操作。用户完成后,他们运行 OKToContinue 以允许宏继续执行第二部分:

    Dim AllowedToContinue As Boolean
    
    Sub FirstPartSecondPart()
        AllowedToContinue = False
        MsgBox "allow user to perform actions"
        Do Until AllowedToContinue
            DoEvents
        Loop
        MsgBox "doing second part"
    End Sub
    
    Sub OKToContinuw()
        AllowedToContinue = True
    End Sub
    

    【讨论】:

    • 如果有超过 1 个子共享它,请记住将您的布尔值声明为 global!谢谢
    猜你喜欢
    • 2021-03-30
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多