全局变量无效

时间:2016-11-18 15:58:26

标签: vba global-variables

我遇到全局变量

的问题

我正在使用vba中的模块

- 在module5中定义全局变量

Public tes As Integer

- 在module6中我定义了“tes”

Function a()
    tes = 1
End Function

- 在模块中我尝试调用“tes”变量

Sub test()
    MsgBox tes
End Sub

我认为结果应显示为1,但显示为0

我想知道出了什么问题

由于

兰迪

1 个答案:

答案 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

变量通常应该尽可能紧凑且短暂;只有在需要它们时(很少)才使用全局变量,而不是每次函数/过程需要访问某些数据时