Question

VBA Global Variables

Asked by: Zaehlas

This should be easy.  I'm trying to declare several global variables that will be available to every form in my database.   After searching the internet, and through trial and error, I am pretty sure that I need to declare the variables as Public in the General section of a Module.  I created a new module called Global Settings, and put my declarations in there:

Public gCurrent_Marshal As String
Public gCurrent_Marshal_ID As String
Public Const gChapter_Name As String = "ULTRA National"
Public Const gChapter_ID As String = "00"

However, when I try to read these variables, or change them using my forms, my forms act as though they do not exist.  I have several text controls on my forms that instead of showing the value, they show #Name?

I know some other resources have said to make sure you are not declaring a module level or procedure level variable with the same name, and I have confirmed that I have NO other Dim, Public, or Private commands referencing these variables.

I have a Main Menu form that should display the values of gCurrent_Marshal and gChapter_Name.  I have a Choose User form that references a table that has a list of user names and user id's that I use a List Box, unbound, and then set the following code for when they double click on a user name in the list box:

Private Sub lstChooseUser_AfterUpdate()

    gCurrent_Marshal = Me.lstChooseUser.Column(0)
    gCurrent_Marshal_ID = Me.lstChooseUser.Column(1)

End Sub

The same form also has text boxes to report the values of gCurrent_Marshal and gCurrent_Marshal_ID.  

None of these controls work unless I declare the variables inside the general section of the form itself...  but then it erases the variables, and they won't work *outside* the form.

What am I doing wrong?   Do I have to have the forms reference the module in some way?   Force the module to load?

"Z"

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2004-02-29 at 01:33:37ID20901646
Tags

vba

,

global

,

variable

Topic

Microsoft Access Database

Participating Experts
5
Points
250
Comments
13

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Const in VBA ?
    In Access 2K - is Const global or limited to the Module in which they are declared?

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: peter57rPosted on 2004-02-29 at 01:46:06ID: 10479446

Hello Zaehlas,

To display the value of a public variable you have to create a function to fetch it.
That's just the way it is.

So create a function that returns the value, and set the control source to
=myfunction() where myfunction is the name of the function you created.

Function Getpubvar1()
GetPubVar1 = PubVar1
end Function


Pete

 

by: ZaehlasPosted on 2004-02-29 at 02:00:31ID: 10479466

OK.  Should I create two functions?   One to retrieve the value, and another to set the value?   And place both functions in my module?

This makes alot more sense than any help files I have read previously.

"Z"

 

by: eghtebasPosted on 2004-02-29 at 02:16:13ID: 10479508

First make sure these are in in a module under module tab (it apears they are):

Public gCurrent_Marshal As String
Public gCurrent_Marshal_ID As String
Public Const gChapter_Name As String = "ULTRA National"
Public Const gChapter_ID As String = "00"

----------
To set them, you just use:

gCurrent_Marshal =Me!txtMarshal     'for exampe, in a event.

-----
to read them to anter them in to a text box, say txtMarshal, reverse the order (once again in an event):

Me!txtMarshal= gCurrent_Marshal

This way, you don't have make functions.

Mike



 

by: eghtebasPosted on 2004-02-29 at 02:20:48ID: 10479523

But, to use it in aquery as criteria, you must use function calls.  Under field [Marshal], for example, you would enter following line in the criteria cell"

IIF(fnMarshal()="",[Marshal],fnMarshal())

Where, in astandard module, under module tab, you will have:

Pumbic function fnMarshal()As String
If Nz(gCurrent_Marshal,"")="" Then
  fnMarshal=""
Else
  fnMarshal=gCurrent_Marshal
End If

End Function

Mike

 

by: ZaehlasPosted on 2004-02-29 at 02:21:32ID: 10479526

Thank you Mike, but I had tried that earlier, and they wouldn't read the data outside of the same module.   I could get them to work on one form, but they wouldn't hold the data going to another form.

The functions are surprisingly easy to program, and I am testing the last of them now.   The only thing I have to do is include a redraw command when I change the data using a function, because it won't update on the display of a form automatically.   Almost got this licked.

"Z"

 

by: eghtebasPosted on 2004-02-29 at 02:24:24ID: 10479530

Re:>Thank you Mike, but I had tried that earlier, and they wouldn't read the data outside of the same module.

That is why you need to have them in standard amodule (under the module tab) not in a class-module (a form's code window).  Make sure  txtMarshal remains unbound.

Mike

 

by: ZaehlasPosted on 2004-02-29 at 02:39:35ID: 10479570

Well, to make this easy, none of this information is going to be in a query.

When I had the declarations as above placed into a module, with NO functions, I used exactly the code as you described.  And it would not read or set the variables.

The initial setting of the variables is done by my Main Menu, using Form_Open.  Then the Menu itself showed these variables.   When I tried the global variable = Value, it didn't error on me, (I don't have Option Explicit Set), but it didn't put a value in either.

Now with the functions, the variable set and read works perfectly.  Almost.   If I change the variable I can't get the text boxes showing the value to change.   I tried

    DoCmd.RepaintObject acDefault

Which should force repainting the current screen.   But it's doesn't seem to do so.

If I can get these displays to refresh, I'm good to go!

"Z"

 

by: eghtebasPosted on 2004-02-29 at 02:47:53ID: 10479594

Re:>If I can get these displays to refresh, I'm good to go!

It means that variables are recognized.  
-----
If you keep you txtBox unbound and use an event, say OnCurrent

MsgBox gCurrent_Marshal & " <-- Remove this line after making sure that variable value is available to you."
Me!txtMarshal=gCurrent_Marshal

------------
I don't know when you are redefining its value, regardless of the event you are using, try:

gCurrent_Marshal="New Marshal"
MsgBox gCurrent_Marshal & " <-- Remove this line after making sure that variable value is REDEFINED."

Mike

 

by: alanwarrenPosted on 2004-02-29 at 02:54:29ID: 10479611

Hi Zaehlas

I use a Module called mod_GeneralDeclarations


   ' --- Global Constants (Messages) ------------------------------------
  Global gMsgText As String       'Text in MsgBox() and InputBox() functions
  Global gMsgType As Integer      'Type in MsgBox() and InputBox() functions
  Global gMsgTitle As String      'Title for MsgBox() and InputBox() function
  Global gStatusText As String    'Status bar text used in Application.Echo method


I use this mainly for error reporting lke this:

Private Sub SomeSub()

On Error Goto ReportError

Your code here

ExitProcedure:
   On Error Resume Next
   Exit Sub

ReportError:
    Select Case err.Number
        Case 2501
        Case 2501
        Case 3420   'Object No longer Valid
        Case 0
        Case Else
            gMsgTitle = "Error in mod_frm_Main.SomeSub"
            gMsgType = vbOKOnly + vbCritical
            gMsgText = "Error " & CStr(err.Number) & ":" & vbCrLf & err.Description
            DoCmd.Hourglass False: Application.Echo True: Beep
            MsgBox gMsgText, gMsgType, gMsgTitle
    End Select
    setCreditLimit = False
    Resume ExitProcedure

End Sub

Alan Warren

 

by: earthman100Posted on 2004-07-24 at 14:02:19ID: 11629581

OK, I will make the question more specific to my needs:

Why is it that when I declare a global variable in the top of one of my modules, like:

     Global quitPrompt As String

and then assign it in one of my onclick form events:  

     quitPrompt = "False"

and then close the form, in the unload section when I return the variable:

     msgbox quitPrompt

I get a null value?

 

by: earthman100Posted on 2004-07-24 at 14:03:01ID: 11629586

oops sorry posted in the wrong question

 

by: roy_guadzPosted on 2005-01-27 at 06:29:38ID: 13152485

i experienced the same problem, when i tried to declare a public variable on the declaration section(s) of my form, when i tried to use the variable after i close the form, the value became null so  what i did was, i created a module (in the module section just below the macro section) of my project and after that i am able to retain the values of my variables.

hope this helps.

 

by: roy_guadzPosted on 2005-01-27 at 06:31:18ID: 13152502

i experienced the same problem, when i tried to declare a public variable on the declaration section(s) of my form, when i tried to use the variable after i close the form, the value became null so  what i did was, i created a module (in the module section just below the macro section of my project) and declared all my global variables in it and after that i am able to retain the values of my variables.

hope this helps.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...