公共和静态变量

时间:2015-03-20 14:40:35

标签: vba excel-vba excel

我正在尝试运行代码来检查用户是否已登录服务器。如果用户已登录,则公共变量loggedIn = true。应保留此值,以便用户可以使用我的用户定义函数。

伪代码:

Public loggedIn as boolean

Sub check_if_is_logged()

  'Code to check if the user is logged
  'if logged then loggedIn = true

end sub

function user_defined()

  'check to see if it is logged
  if loggedIn = false then 
Exit Function

end function

但每次运行代码时,值都会返回false,我无法使用该函数。有没有办法同时声明一个公共变量和静态变量?

1 个答案:

答案 0 :(得分:1)

除非函数声明返回值,否则函数user_defined将始终返回False,无论变量loggedInTrue还是False。因此,这将为外观提供loggedIn公共变量未按预期/预期持久化。我怀疑如果你调试代码并逐步完成它,你会发现情况如此:loggedIn正确是True,但user_defined函数没有正确返回值。 / p>

这显然对我有用

Public loggedIn As Boolean

Sub check_if_is_logged()

    loggedIn = True

End Sub

Function user_defined()
    Dim ret As Boolean

    If loggedIn Then ret = True

    user_defined = ret
End Function

loggedIn过程中,我简单地假设用户已登录(当然,您将拥有确定True或False的逻辑)。

然后,如果我查询user_defined函数,在即时窗口中执行?user_defined,结果为True

loggedIn的值会恢复为False

如果你观察到不同的东西,那么检查你的逻辑可能是错误的,或者你正在对End运行时做些什么来清除公共变量。

注意:这不会在End语句中保留(尽管它应该在End SubEnd FunctionEnd Type,{{ 1}}等。除了关闭工作簿/等之外,这也不会持续存在。您需要将值保存到工作簿中的End EnumName集合。