首页 > 解决方案 > 如何在 Word VBA 中退出多个子

问题描述

我正在使用 VBA。我有一个 Word 文档,它会在打开时启动一个用户表单。用户窗体接受来自用户的大量输入(通过文本框、组合框、复选框和列表框),然后单击用户窗体底部的命令按钮。然后执行的代码从用户表单中获取所有输入,处理信息,并将适当的数据填充到文档中的几个书签中。

我通常不太注意纠错,因此如果我没有做对所有事情,我的宏就会崩溃(我只是下班后做个人项目的菜鸟)。我正在尝试实施最佳实践,因此我想构建一些错误处理代码。特别是,如果跳过了用户表单上的数据字段,我希望通知用户,并且脚本的处理停止。

我可以检测是否有遗漏并通过消息框通知用户并退出立即子例程。我不知道如何退出两个子例程。我不包括实际代码,因为我希望有人能在概念上为我指出正确的方向,而不是为我编写代码。

我当前的流程是这样的:单击命令按钮,子例程遍历用户表单中的每个输入字段。对于每个输入字段,它调用另一个子例程从输入字段中获取值。该子例程然后调用另一个子例程来更新适当的书签。然后控制返回到由命令按钮调用的主子程序并处理下一个输入字段。

我在第二个获取字段值的子例程中检查空字段/省略的响应。使用 If 语句,如果有空值,我可以启动消息框并退出子。但这只会退出二级潜艇;单击命令按钮时启动的主子继续运行并处理剩余的输入字段。我也想停止此过程,以便用户在修复错误后必须再次单击命令按钮。我不想执行终端结束命令,因为这会清除用户表单,我必须从头开始。如何在不关闭整个程序的情况下停止两个正在运行的子程序?

提前致谢,

标签: vbams-wordsubroutine

解决方案


您可以将第二个子例程更改为返回成功或失败的布尔值的函数,然后在主例程中退出(如果失败)。


推荐阅读