在Access Form Sub中声明变量以多次使用

时间:2019-01-06 06:21:02

标签: vba ms-access

我想在加载Access UserForm时声明一个Public(?)变量,并多次重复使用这些变量。我有几个AfterUpdate子程序可以运行并使用我在vba代码中定义的公共变量。我知道我可以在一个子变量中定义变量,然后在AfterUpdate子变量中调用该子变量,但是我不希望我的代码的一半只是再次调用相同的子变量,并希望使其更整洁。

我试图弄清楚Public / Global Variable方法,但是我一生无法理解。

下面是一个简单的示例,其中有四个名为A,B,C和D的文本框,我希望var和error消息是可变的,只要加载此表单,它们都是常量。

Option Compare Database

'declare constant variables
Public var as String
Public error_message as String
var=5
error_message="input a lower value"

Private Sub A_AfterUpdate()
If A.Value > var Then
    MsgBox error_message
End If
End Sub

Private Sub B_AfterUpdate()
If B.Value > var Then
    MsgBox error_message
End If
End Sub

Private Sub C_AfterUpdate()
If C.Value > var Then
    MsgBox error_message
End If
End Sub

Private Sub D_AfterUpdate()
If D.Value > var Then
    MsgBox error_message
End If
End Sub

我如何更改此格式以便其正常工作?再次,我知道我可以调用定义了var的Sub并返回它,但是我宁愿不对每个AfterUpdate这样做。

谢谢。

1 个答案:

答案 0 :(得分:3)

  1. 您是对的-听起来像您想要一个“全局变量”

  2. 您也是正确的-方法是:

    a)定义子例程或函数的变量 OUTSIDE

    b)将变量标记为“公共”。

  3. 如果可以避免的话,您可能不想将变量命名为“ var”(或“ A”,“ B”或“ C”)。我认为这些只是“示例”。

  4. 通常为全局变量创建一个新的单独的VBA模块。在这里,您可以定义变量“ Global”。

  5. 我还喜欢在所有模块中添加“ Option Explicit”。

您可能对此链接也很感兴趣:

VBA: What is the difference between Dim, Global, Public, and Private as Modular Field Access Modifiers?