@The_Doc_Man, I suspect our differences are for a good part caused by different use of terminology (see last paragraph below). Nevertheless, for the public audience I'm going to respond to what you literally wrote instead of what I think you meant.
Most of the complaints are, in my opinion, caused by poor project management and poor documentation.
This!
Project management and documentation to manage a bloody variable? - This alone is a sufficiently strong counter-argument against global variables to avoid them whenever possible.
How many people active in this forum have documentation and/or project management for their applications?
There is not a single thing wrong with global variables where the data in question actually represents something common to the entire app.
The user name example below is well suited to prove this false.
If you use the operating system's method for identifying the username of the person who is using the app, that is something you can get from anywhere inside the app. A global variable merely assures this availability in fewer steps. Do you ever use the username in your app?
If you use the Windows user name it is impossible that this will change during the run time of the current instance of your application. For that reason, using a global
variable to store it is in itself a design fault.
Write a function (or property) to retrieve the user name (you need that anyway) and use this function instead of a global variable to access it anywhere. (You can use a static, local(!) variable in the function to cache the value, as it won't change.)
If you use your own authentication method, use a
private variable in the authentication module to store the user name after authentication and make it available globally, but read-only, with a function as with the Windows user name above.
On this, I feel EXTREMELY STRONGLY that globals are just another tool in the tool box. If you don't know how to manage them and limit them then perhaps you shouldn't use them.
The term "Globals" is not identical to global variables!
Every global variable is a "global". But not every "global" is a (global) variable! Other globals, like constants, functions, and properties also induce dependencies and tight coupling, which is not ideal, but they do not bring the horrible error proneness and burden of managing and debugging global
writable state (=global variables). My strong advice against global
variables does not extend to other globals. The latter are also problematic from a general software design perspective, but Microsoft Access forces us to still use them a lot. So, there is little choice for us Access developers other than to swallow this pill.