Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Word VBA中退出多个子系统_Vba_Ms Word_Subroutine - Fatal编程技术网

如何在Word VBA中退出多个子系统

如何在Word VBA中退出多个子系统,vba,ms-word,subroutine,Vba,Ms Word,Subroutine,我正在使用VBA。我有一个Word文档,它在打开时启动一个用户表单。用户表单接受来自用户的输入(通过文本框、组合框、复选框和列表框),然后单击用户表单底部的命令按钮。然后,执行的代码从userform获取所有输入,处理信息,并将适当的数据填充到文档中的几个书签中 我通常不太注意纠错,如果我没有把每件事都做好,我的宏就会崩溃(我只是个下班后做个人项目的呆子)。我正在尝试实现最佳实践,因此我想构建一些错误处理代码。特别是,我希望在userform上的数据字段被跳过时通知用户,并停止对脚本的处理 我可

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

我通常不太注意纠错,如果我没有把每件事都做好,我的宏就会崩溃(我只是个下班后做个人项目的呆子)。我正在尝试实现最佳实践,因此我想构建一些错误处理代码。特别是,我希望在userform上的数据字段被跳过时通知用户,并停止对脚本的处理

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

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

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


提前感谢,

您可以将第二个子例程更改为一个函数,该函数在成功或失败时返回布尔值,如果失败,则在主例程中退出。

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

您可以将第二个子例程更改为一个函数,该函数返回一个bool值表示成功或失败,然后在主例程中退出(如果失败)。谢谢@trashrobber!我将研究如何使用函数。我只使用过子程序。但是你的建议听起来是个不错的解决办法。@trashrobber你的解决办法效果很好,谢谢!我只能看到标记您的回答或回答我自己问题的按钮。如果有什么方法可以给你信用,我愿意。如果你愿意接受的话,我添加了我的评论作为回答。很高兴这个建议对您有效。您可以将第二个子例程更改为一个函数,该函数返回bool值表示成功或失败,然后在主例程中退出(如果失败)。谢谢@trashrobber!我将研究如何使用函数。我只使用过子程序。但是你的建议听起来是个不错的解决办法。@trashrobber你的解决办法效果很好,谢谢!我只能看到标记您的回答或回答我自己问题的按钮。如果有什么方法可以给你信用,我愿意。如果你愿意接受的话,我添加了我的评论作为回答。很高兴这个建议对你有用。