2016-07-27 110 views
-1

我知道这可能是一个更普遍的问题,但我看了我的代码100次,我不知道什么是错的。我设置了一个全局标志,以便它可以用于我的应用程序的不同形式。布尔值为什么还原为原始值?

Dim OverPopulated as Boolean 

我有我第一次将它设置为FALSE的函数,它通过一些验证它被设置为TRUE后。

现在我做了一堆东西,通过不同的形式,价值保持正确的整个时间。基本上,我需要另一种形式这个值,所以当我检查

if OverPopulated = false then 
    MsgBox "You Can't do this and that" 
    exit sub 
End if 

然后突然之间它被设置为FALSE。我已经在应用程序中检查了OVERPOPULATED的每个实例,并为其设置了一个断点,以确保无处设置它为FALSE,除了在验证之前将其设置为FALSE。

我在我的应用程序中只有2种其他形式。有一个地方的国旗正在两次通过相同的声明运行(就像上面的那个)。第一次通过时,该值是正确的,然后再次通过并将该值设置为FALSE。

任何想法?如果这太模糊,请让我知道,我会尝试编辑它。

编辑:我删除了大量的代码,但这里是它的外观.....

Dim OverPopulated as Boolean 

'模块化水平现在

Private Sub ValidatePopulation() 

Dim admDate as date 

OverPopulated = False 

admDate = Format(Now(), "mm/dd/yyyy") 


Select Case revPURP 
    Case 0, 1, 2 
    'Check make sure these fields 
    'some if statements, checking, validation 

    Case Else ' no need to do a 
End Select 

OverPopulated = True 'I MAKE SURE IT GETS HERE and is set to TRUE!!! 

End sub 

,在其他功能我用它像这样...

If OverPopulated = False Then 
    If optStat (0).Value = True Or optStat (1).Value = True Then 
     MsgBox "You are not able to do this”, vbCritical, "Incorrect review status...." 
     TabPop.Tab = 6 
    End If 
    Exit sub 
Else 
    'Proceed with SAVE 
End If 

所以我有这个。而且我还有其他地方的发言。这个被击中两次。我第一次逐行浏览它,它是FALSE,然后第二次围绕这个值是TRUE。

+2

VB6无论如何都有一个奇妙的功能,您可以在变量值更改时设置断点。这将很方便地找到它在何处/何时/为什么它涉嫌变回 – Plutonix

+0

包含“OverPopluated”的代码是否太大而无法在此处发布? –

+0

@MattCremeens让我试着告诉你这个... – BobSki

回答

0

它看起来像某些原因值被重置为FALSE。我从表单代码中取出Dim OverPopulated作为布尔值,并将其放置在一个存储所有其他全局变量的GLOBAL模块中。这似乎已经解决了在应用程序中运行时价值保持不变的问题。感谢您的评论。

Global OverPopulated as Boolean 
+0

啊。我以为你说它已经在一个模块而不是形式! – topshot