如何有条件地停止访问VBA代码?

时间:2012-06-15 14:14:51

标签: forms ms-access vba procedure

所以我在Access中创建了一个表单,它有一个组合框和一个文本框。按下按钮后,表单会计算一些内容,但是必须填充组合框和文本框,或者两者都不能填充。我想做的是放入一个条件,这样如果只填充其中一个,就会弹出一个消息框解释填充两个框,然后继续停止代码。我理解如何处理消息框部分,但是现在它显示了消息框,然后继续处理产生错误的代码。

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

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

3 个答案:

答案 0 :(得分:3)

您可以选择几种方式:

  1. 如您所知,将当前与按钮单击事件关联的代码移至新的子过程。在按钮单击事件中执行验证,如果一切都通过,则调用子过程。如果没有,请显示您的消息框。
  2. 假设您在按钮点击事件中有正确的错误处理,请引发错误而不是显示消息框。这会将控制流程移动到过程中的错误处理程序。
  3. 显示消息框后,使用Exit Sub或Exit Function停止代码执行。
  4. 选项1可能是最好的方法,因为它可以促进更好的编码实践。如果你有很长的子例程,那么你可能需要将子例程分解为更小的工作单元,这使得代码重用和调试变得更加容易。

    选项2适用于条件确实是错误的某些情况。有人可能会说,验证测试失败是一种错误状态。

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

答案 1 :(得分:1)

当您弹出消息框时,您应该可以使用Exit Sub或Exit Function,具体取决于您的程序。它应该停止执行代码并退出程序。

答案 2 :(得分:0)

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

希望它有所帮助。