如何自动停止VBA宏?

我喜欢编码

我知道您可以使用Ctrl+手动停止正在运行的VBA宏Break,但是如果满足特定条件,有什么办法可以使代码自动停止?exit function/exit sub不起作用,因为它们仅终止了在其中调用的方法。

例如,

sub a
    call b
    msgbox "a complete"
end sub

sub b
    call c
    msgbox "b complete"    'this msgbox will still show after the `exit sub` in 'c'
end sub

sub c
    msgbox "entering c"
    exit sub               'this will only `exit sub` 'c', but not 'a' or 'b'
    msgbox "exiting c"
end sub

'OUTPUT:

'entering c
'b complete
'a complete

我想我可以将这些sub转换为function,并利用返回码来了解该方法是否成功执行,但是有没有更简单的方法来执行此操作?

我喜欢编码

您可以使用引发自己的用户定义错误err.raise这与您的示例相似,但是功能更强大一点,它是一个实际错误,即使将其应用于嵌套调用,它也会暂停代码执行。

例如,

sub a
on error goto exitCode
    call b
    msgbox "a complete"
    exit sub       'you need this to prevent the error handling code from always running
exitCode:
    msgbox "code is exiting..."
    'clean up code here
end sub

sub b
    call c
    msgbox "b complete"
end sub

sub c
    msgbox "entering c"
    err.raise 555, "foo", "an error occurred"
    msgbox "exiting c"
end sub

'OUTPUT:

'entering c
'code is exiting...

err.raise行会将控件发送到exitCode:标签,即使该控件在之外也是如此a您可以使用任何条件来测试是否应引发此自定义错误。

有关err对象和VBA错误处理的更多信息-

https://msdn.microsoft.com/zh-CN/library/ka13cy19(v=vs.90).aspx

http://www.cpearson.com/excel/errorhandling.htm

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA宏MsgBox自动将数字转换为科学计数法,如何停止该计数?

来自分类Dev

使VBA宏自动/恒定运行

来自分类Dev

如何停止运行Vim宏

来自分类Dev

VBA Excel宏消息框自动关闭

来自分类Dev

粘贴数据时自动运行宏VBA

来自分类Dev

VBA Excel宏消息框自动关闭

来自分类Dev

为什么 VBA 宏关闭了自动计算?

来自分类Dev

打开其他运行时错误的工作簿时,如何防止VBA宏停止?

来自分类Dev

Excel-VBA宏-在特定工作表处停止代码

来自分类Dev

VBA 宏在大约 4000 次迭代后停止/挂起 Excel

来自分类Dev

如何停止自动AJAX通话?

来自分类Dev

如何停止自动执行FreshClam

来自分类Dev

如何自动停止Docker容器?

来自分类Dev

如何停止自动执行FreshClam

来自分类Dev

如何停止自动时间更新?

来自分类Dev

如何停止自动AJAX通话?

来自分类Dev

如何停止自动apt更新?

来自分类Dev

如何停止Jqpivot的自动排序?

来自分类Dev

在工作簿上打开Excel VBA自动运行宏

来自分类Dev

使用VBA功能创建自动填充宏的问题

来自分类Dev

VBA宏-Excel中我的文本的自动翻译

来自分类Dev

VBA 宏将自动填充转换为日期

来自分类Dev

VBA代码删除文件打开时自动打开的宏

来自分类Dev

如何将Excel VBA宏移植到OpenOffice宏?

来自分类Dev

如何使用宏(vba 代码)本身获取宏的路径?

来自分类Dev

如何解决宏找不到VBA

来自分类Dev

如何编辑和复制非 VBA 宏?

来自分类Dev

VBA宏更改宏

来自分类Dev

如何使Excel VBA在If and Then之后停止