我正在尝试运行代码来检查用户是否已登录服务器。如果用户已登录,则公共变量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,我无法使用该函数。有没有办法同时声明一个公共变量和静态变量?
答案 0 :(得分:1)
除非函数声明返回值,否则函数user_defined
将始终返回False
,无论变量loggedIn
是True
还是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 Sub
,End Function
,End Type
,{{ 1}}等。除了关闭工作簿/等之外,这也不会持续存在。您需要将值保存到工作簿中的End Enum
或Name
集合。