我有一个名为flag设置的全局变量。我可以从我的代码中的每个模块访问标志,但是当我在Sub Command97_Click()中为其分配值1时,由于某种原因,标志不会将值保留为Sub Form_BeforeUpdate(取消为整数)。当我在Sub Form_BeforeUpdate中打印标志时,它不再等于1。我知道这很愚蠢,但我是vba的新手......
请记住,我的代码不仅仅是这个,但我只保留基本的问题。
提前致谢!
Public flag As Integer
Private Sub Command97_Click()
flag = 1
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
If flag = 1 Then
DoCmd.RunCommand acCmdUndo
MsgBox "Flag = " & flag, vbInformation
Exit Sub
End If
End Sub
答案 0 :(得分:2)
我怀疑你有一个可变范围问题。它取决于您的标志变量的定义位置,还有其他地方具有相同名称的变量
如果你在表单模块的顶部说Public flag as Integer
,那么它并不是真正的全局。
答案 1 :(得分:0)
在所有模块中搜索“公共标志”和“全局标志”,也许您有两次变量名称 如果在它之前设置模块名称,则可以区分不同标准模块中的两个同名变量:
Module1.flag = 1
Module2.flag = 1
并在表单模块中使用
Me.flag = 1
确保您目前使用哪个旗帜。