2

所以我在 Access 中创建了一个表单,它有一个组合框和一个文本框。表单在按下按钮后会计算一些东西,但是组合框和文本框都必须填写,或者两者都不能填写。我想要做的是设置一个条件,如果只填充其中一个,则会弹出一个消息框,解释填充两个框,然后继续停止代码。我了解如何执行消息框部分,但现在它正在显示消息框,然后继续执行产生错误的代码。

我已经做了一些研究,但我发现的大部分内容都与暂时暂停表格有关,而不是完全停止它。

我有一些关于如何做到这一点的想法,但我在执行它们时遇到了麻烦,坦率地说,我什至不确定它们是否会起作用。我的第一个计划是复制并粘贴过程中的所有计算部分,用它们创建一个新过程,在按钮单击过程中创建一个 if 语句,如果它通过 if 语句,则调用新过程。我的第二个计划有点乏味,但我相当有信心它会奏效。它只是用 if 语句包围整个代码,如果通过则执行代码,如果不通过,则不执行任何操作并让它到达过程的末尾并自行结束。我对第二个的唯一问题是我事先有很多代码,如果可以的话,我宁愿不要浪费大量时间重新缩进行,但如果我不能,我会把它作为备份找到更好的方法。

4

3 回答 3

3

您有几个可用的选项:

  1. 正如您所建议的,将当前绑定到按钮单击事件的代码移至新的子过程。在按钮单击事件中执行您的验证,如果一切通过,则调用子过程。如果没有,请显示您的消息框。
  2. 假设您在按钮单击事件中有适当的错误处理,请引发错误而不是显示消息框。这会将控制流移动到过程中的错误处理程序。
  3. 显示消息框后,使用 Exit Sub 或 Exit Function 停止代码执行。

选项 1 可能是最好的方法,因为它促进了更好的编码实践。如果您有很长的子例程,则可能表明您需要将子例程分解为更小的工作单元,这使得代码重用和调试更加容易。

在条件确实是错误的某些情况下,选项 2 是合适的。有人可能会争辩说,验证测试失败是一种错误情况。

就个人而言,在大多数情况下,我倾向于避免使用 Exit Sub 和 Exit Function(选项 3),因为我喜欢在子例程中有一个点,例程退出并将控制权传递回调用过程。例程中有多个退出点表明您需要重构代码\重新考虑您正在应用的逻辑。有时无济于事,但通常会造成更难以调试的情况。

于 2012-06-15T14:41:50.890 回答
1

当您弹出消息框时,您应该能够使用 Exit Sub 或 Exit Function 取决于您的程序是什么。它应该停止代码的执行并退出程序。

于 2012-06-15T14:33:57.680 回答
1

我知道已经很晚了,但我只是想补充一点,如果您想停止运行任何 VBA 代码,例如,您可以End在错误处理程序中使用。这样它就不会返回到调用的子/函数(如果有的话)。

希望能帮助到你。

于 2017-04-10T19:04:46.817 回答