我遇到全局变量
的问题我正在使用vba中的模块
- 在module5中定义全局变量
Public tes As Integer
- 在module6中我定义了“tes”
Function a()
tes = 1
End Function
- 在模块中我尝试调用“tes”变量
Sub test()
MsgBox tes
End Sub
我认为结果应显示为1,但显示为0
我想知道出了什么问题
由于
兰迪
答案 0 :(得分:1)
如果a
永不运行,则永远不会分配tes
。在您阅读a
并且msgbox将显示1:
tes
已运行
Sub test()
a
MsgBox tes
End Sub
也就是说,将tes
作为参数传递可能更好,而不是洒掉可以从任何地方修改的全局变量。
Sub DoSomething()
Dim foo As Integer
foo = 1
Test foo
End Sub
Sub Test(ByVal value As Integer)
MsgBox value
End Sub
变量通常应该尽可能紧凑且短暂;只有在需要它们时(很少)才使用全局变量,而不是每次函数/过程需要访问某些数据时。