为什么布尔值会恢复为原始值?

时间:2016-07-27 20:37:18

标签: vba vb6 boolean

我知道这可能是一个更普遍的问题,但我已经对我的代码进行了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。

我的应用程序中只有其他两种形式。有一个地方通过同一个语句运行两次标志(就像上面那个)。它第一次通过时,值是正确的,然后再次通过,并将值设置为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。

1 个答案:

答案 0 :(得分:0)

看起来由于某种原因,该值被重置为FALSE。我从表单代码中取出Dim OverPopulated作为布尔值,并将其放在GLOBAL模块中,其中存储了所有其他全局变量。这似乎解决了我在应用程序中操作时保持价值的问题。感谢您的所有意见。

Global OverPopulated as Boolean