2015-11-27 47 views
0

任何人都可以幫忙?VBA訪問循環代碼不起作用

這段代碼沒有啓動時,它應該和不停止的時候,它應該,我不明白爲什麼。

Private Sub Condition1_Click() 

Dim Condition1 As Boolean 

Do 

DoCmd.OpenQuery "qGBX2b" 
DoCmd.OpenQuery "qGBX2c" 
DoCmd.OpenQuery "qGBX2d" 
CurrentDb.Execute "ALTER TABLE GBX2Temp ALTER COLUMN Line COUNTER(1,1)" 
DoCmd.Requery 

Loop Until Condition1 = True 

MsgBox "Done", vbDefaultButton1, "Done" 
End Sub 

它是從一種形式,其中一個字段被遞減計數和條件1是一旦它達到一定的值,該值變爲TRUE的字段運行。

由於代碼如上,它運行一次,並且不會循環,而Condition1的值爲FALSE。如果我將Loop標準更改爲「Loop Until Condition1 = False」,它會在值爲FALSE時運行,但在更改爲True時不會停止。

我哪裏錯了?

+0

你在哪裏改變Condition1?子例程中具有該名稱的局部變量。如果它是一個字段,那麼你需要一個表單引用。它看起來像sub中的變量名,它不會改變。 – nicomp

+0

是的,謝謝Delmer - Condition1是一個領域。我在代碼中更改引用表單字段而不是局部變量的是什麼? –

回答

1

您似乎遇到範圍問題。當您發出​​聲明,該變量名稱覆蓋所有其他字段或控件的名稱可能存在,除非您特別指定範圍(例如與me.Condition1

如果你有一個字段或文本框命名Condition1,你可以簡單地刪除dim語句,它將使用該控件或字段的值。我建議您將文本框重命名爲字段名以外的內容......僅僅是因爲它完全明確地指出了您指的是哪個值。因此,如果您的字段名稱是Condition1,那麼請將您的文本框命名爲txtCondition1

+0

輝煌 - 謝謝。 –