使用sendKeys函数停止使用另一个宏(按钮)执行宏

时间:2014-07-29 09:15:12

标签: excel vba excel-vba

我有这个Vba代码需要花费大量时间来执行,我执行此操作sub来停止执行,但它没有用,我使用了Sendkeys函数。

sub stop ()
SendKeys "{Ctrl,Pause}"
end sub

我还要恢复宏的执行,我尝试点击Ctrl + Break但它没有恢复。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:5)

打开VBE并插入模块并复制粘贴以下代码

Sub Main()
    For i = 1 To 100000
        DoEvents
        Debug.Print i
    Next i
End Sub

Sub PauseMacro()
    Application.SendKeys "^{BREAK}"
End Sub

返回Sheet1并在开发人员选项卡上插入一个按钮并为其指定PauseMacro

现在运行Main子并点击按钮停止执行Main

哦,顺便问一下。 here's how to use the Application.SendKeys method

答案 1 :(得分:2)

您应该避免使用SendKeys

类似于我建议的方法,但不使用SendKeys可能是这样的:

Global IsTimeToStop As Boolean

Sub Main()
    IsTimeToStop = False
    For i = 1 To 100000
        DoEvents
        Debug.Print i
        If IsTimeToStop Then Exit Sub
    Next i
End Sub

Sub PauseMacro()
    IsTimeToStop = True
End Sub

如果Global不是标准模块,请将Dim替换为{{1}}。

答案 2 :(得分:1)

如果变量上的变量设置监视怎么办?

右键单击变量并添加新手表。

VBA Watch