我有一个名为EmployeeID的全局变量。我通过调用函数来设置它:
Global EmployeeID As Integer
Public Sub init_Globals(emp As Integer)
EmployeeID = emp
End Sub
在主表格上,我使用了:
MsgBox EmployeeID
从一个按钮,它工作得很好;但有趣的是,当我从子表单中使用它时,它返回0: 我可以补充一点,这也是一个连续表格。
Private Sub cboWhichDate_AfterUpdate()
Me.txtEmployee = EmployeeID
End Sub
答案 0 :(得分:2)
如果“全局”变量的范围是全局变量,则它只能是“全局变量”。将Global
访问修饰符粘贴到类模块中声明的字段不会使其成为全局。
事实上,Global
关键字已弃用,并且已被Public
访问修饰符完全替换/取代。
重要的是变量的范围。如果该声明位于类模块中(表单的代码隐藏 本质上是一个类模块),那么您所做的就是声明一个公共实例字段;您只能通过拥有它的对象实例访问该值。
Dim MyObject As New MyForm
MyObject.EmployeeID = 42
MsgBox MyObject.EmployeeID
要创建一个全局变量,请在项目中添加一个标准模块(.bas),并在那里声明它。
Public EmployeeID As Integer
现在每个地方的所有人都可以访问EmployeeID
,因为它作用域到模块(即不是对象的实例) ,及其辅助功能是公开的。
尽管如此,全球变量是邪恶的,很容易导致不可维护的意大利面条代码;请考虑将值作为参数传递。