vba - 如何在 Word VBA 中退出多个子
问题描述
我正在使用 VBA。我有一个 Word 文档,它会在打开时启动一个用户表单。用户窗体接受来自用户的大量输入(通过文本框、组合框、复选框和列表框),然后单击用户窗体底部的命令按钮。然后执行的代码从用户表单中获取所有输入,处理信息,并将适当的数据填充到文档中的几个书签中。
我通常不太注意纠错,因此如果我没有做对所有事情,我的宏就会崩溃(我只是下班后做个人项目的菜鸟)。我正在尝试实施最佳实践,因此我想构建一些错误处理代码。特别是,如果跳过了用户表单上的数据字段,我希望通知用户,并且脚本的处理停止。
我可以检测是否有遗漏并通过消息框通知用户并退出立即子例程。我不知道如何退出两个子例程。我不包括实际代码,因为我希望有人能在概念上为我指出正确的方向,而不是为我编写代码。
我当前的流程是这样的:单击命令按钮,子例程遍历用户表单中的每个输入字段。对于每个输入字段,它调用另一个子例程从输入字段中获取值。该子例程然后调用另一个子例程来更新适当的书签。然后控制返回到由命令按钮调用的主子程序并处理下一个输入字段。
我在第二个获取字段值的子例程中检查空字段/省略的响应。使用 If 语句,如果有空值,我可以启动消息框并退出子。但这只会退出二级潜艇;单击命令按钮时启动的主子继续运行并处理剩余的输入字段。我也想停止此过程,以便用户在修复错误后必须再次单击命令按钮。我不想执行终端结束命令,因为这会清除用户表单,我必须从头开始。如何在不关闭整个程序的情况下停止两个正在运行的子程序?
提前致谢,
解决方案
您可以将第二个子例程更改为返回成功或失败的布尔值的函数,然后在主例程中退出(如果失败)。
推荐阅读
- deep-learning - Exception: Input blob arguments do not match net inputs
- php - Php $_SERVER['REMOTE_ADDR'] 每次都给出不同的 ip
- java - New Record instance similar to Oracle forms in ADF
- amazon-web-services - How to set delayed AWS Lambda call inside other lambda?
- excel - 查找与特定日期最接近的日期
- spring-boot - 在 User-Agent 中获取多个浏览器详细信息
- openid - 在 keycloak 中添加我的应用程序作为身份提供者
- python - 作为服务的 TensorFlow 模型给出了错误
- c# - 程序写入 WPF 文本框时如何降低高 CPU 使用率?
- neo4j - windows下Gremlin-neo4j的安装和配置