2013-05-08 53 views
0

我有一個稱爲標誌設置的全局變量。我可以從我的代碼中的每個模塊訪問標誌,但是當我在Sub Command97_Click()中爲其賦值1時,出於某種原因,標誌不會將值保留爲Sub Form_BeforeUpdate(Cancel As Integer)。當我在Sub Form_BeforeUpdate中打印標誌時,它不再等於1。我知道這是愚蠢的,但我是新vba ...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

在設置'flag = 1'後,使用調試器/ F8:'Form_BeforeUpdate(False)'來放置該行。這應該帶你到另一個子節點,並且'flag'的值應該是1.讓我知道發生了什麼。 – 2013-05-08 17:29:36

回答

2

我懷疑你有一個變量的範圍問題。它取決於您的標誌變量的定義位置,以及其他位置是否有相同的名稱。
如果你在表單模塊的頂部說Public flag as Integer,那麼它不是全球性的。

Take a look here for an explanation of scopes.

0

搜索在所有模塊「公共標誌」和「全局標誌」,也許你有兩次這樣的變量名。
有可能在不同的標準模塊,兩個同樣名字的變量來區分,如果你之前設置的模塊名稱:

Module1.flag = 1 
Module2.flag = 1 

和形式的模塊使用

Me.flag = 1 

,以確保其此刻您使用的國旗。