I have a Global Variable called EmployeeID. I set this by calling a function:
Global EmployeeID As Integer
Public Sub init_Globals(emp As Integer)
EmployeeID = emp
End Sub
On the main form, I used:
MsgBox EmployeeID
from a button and it works just fine; but the funny thing is when I use this from a subform it returns a 0: I might add that this is a Continuous Form as well.
Private Sub cboWhichDate_AfterUpdate()
Me.txtEmployee = EmployeeID
End Sub
A "global" variable can only be "global" if its scope is global. Sticking a
Global
access modifier to a field declared in a class module doesn't make it global.In fact, the
Global
keyword is deprecated, and is completely replaced/superseded by thePublic
access modifier.What matters is the variable's scope. If that declaration is located in a class module (a form's code-behind is essentially a class module), then all you've done is declare a public instance field; you can only access the value via the object instance that owns it.
To make a global variable, add a standard module (.bas) to your project, and declare it there.
Now everyone everywhere can access
EmployeeID
, because it's scoped to a module (i.e. not an instance of an object), and its accessibility is public.That said, global variables are evil and can easily lead to unmaintainable spaghetti code; Consider passing values as parameters instead.