使用sendKeys函数使用另一个macros(button)停止macros的执行

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

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

我也想恢复执行我的macros,我试图按Ctrl + Break但它没有恢复。 感谢您的帮助。

打开VBE并插入一个模块并复制粘贴下面的代码

 Sub Main() For i = 1 To 100000 DoEvents Debug.Print i Next i End Sub Sub PauseMacro() Application.SendKeys "^{BREAK}" End Sub 

返回Sheet1并在开发人员选项卡上插入一个button,并将PauseMacro分配给它。

现在运行Main子项并按下button来停止Mainmacros的执行

哦,顺便说一句 这里是如何使用Application.SendKeys方法 。

您应该避免使用SendKeys

一种类似于我所build议的方法,但不使用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 

如果这不是标准模块,则将Globalreplace为Dim

如何设置一个监视variables,如果它改变了呢?

只需右键单击一个variables并添加一个新的手表。

VBA手表