2015-11-27 35 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

辉煌 - 谢谢。 –