QUOTE (datAdrenaline @ Apr 28 2012, 07:57 AM)

Why use variables at all really. You can Open the Form upon start up in Hidden mode. If the user has the ability to change the setting the control the .Visible property of the Form object. Then when you need a value from those settings, simply refer to the control on the Form object that holds that value ...
Forms("UserSettingsForm").Controls("theControlNameYouNeed")
This ended up being the method that I used. It works very well. Thanks.
For other newbies like me who may read this I will try to explain this method in detail.
1. Created a linked table called UserSettingsTable (the table is linked to a separate database so that I can update the main database without deleting the user settings). This table contains these three fields: ID (autonumber), Key (text), and Value (text). It is basically the same as an .ini file. And it probably doesn't need the ID field.
2. Created a form called "UserSettings" that opens automatically on startup.
3. Specified this form to open in hidden mode upon startup. My main form opens first upon startup as specified in Tools-> Startup. The OnOpen event in the main form includes the line
CODE
DoCmd.OpenForm "UserSettings", , , , , acHidden
.
4. When a user wants to change a setting they hit the "Settings" button that I made on the main form which makes the form visible. I used
CODE
DoCmd.OpenForm "UserSettings", acNormal
5. The detail section of the form includes the Key and Value fields of the UserSettings table. The Key field is disabled and locked because I don't want the user to ever edit that. The value field is for them to change at will.
6. In the footer of the form are text boxes corresponding to each value. Labels exist for each key. For example, the key ClubName has a label saying "ClubName". Right next to the label is a text box that displays the value for ClubName. This text box is what makes the whole thing sing. The text box gets it's information from typing the following expression directly into the ControlSource field of the text box: =DLookUp("Value","UserSettings","Key = 'Club Name'")
I muted the colors of the fields in the footer because they are not for the user.
7. Now that you have this value expressed in a text box on an open form, you can reference it anywhere in your database. For example, I used this expression to put the name of the club at the top of a report: =([Forms]![UserSettings]![ClubName])
I used this expression successfully to incorporate a cost markup on a form: =FormatCurrency([CasePrice]+[CasePrice]*([Forms]![UserSettings]![MarkUp]))
Here is the same "variable" successfully used as an expression in a query: ClubCase: [CasePrice]+[casePrice]*Forms!UserSettings!Markup
And finally, here it is in VBA code:
CODE
stClubName = Forms!UserSettings!ClubName
8. Of course, you have to prevent the user from ever closing the form because a closed form cannot be referenced at all. To accomplish this, I disabled the close button on the form (the red X), then created my own "close" button that hides the window without closing it
CODE
DoCmd.OpenForm "UserSettings", , , , , acHidden
9. The other important task that the close button performs is to requery the form data
CODE
DoCmd.Requery
otherwise the user's fresh input would not be transferred to the text box in the footer until the next time the database was opened. To ensure that the user will always use my "Close" button when they are done updating settings, I removed the min and max window options as well.