Crowley16,
Thanks for your response. Your answer surprised me, so I did a bit of testing. The Access VBA compiler disagrees with you. If I declare a form module-level Dim variable on FormA, any code to initialize it from a procedure on FormB results in a compiler error - "variable not defined." If I declare a Dim or Private variable in a regular module and compile, same error. If I declare a form module-level Public variable on FormA and initialize it from FormB using the fully qualified variable name i.e. Forms!FormA.variablename, then the variable is available as long as FormA is open. Not so with Dim or Private - they will compile successfully, but will bomb at run-time.
So from my tests it looks like:
1) Public variables declared in a regular module are available throughout the project.
2) Private and Dim variables declared in a regular module are available to procedures within that module.
3) Public variables declaredin a form's module are available throughout the project if the form is open and the variable is referred to by its fully qualified name.
4) Private and Dim variables declared in a form's module are only available to procedures within that form's module.
And I still can't find a functional difference between module-level Dim and Private variables.
Ken S.