Microsoft KB Archive/140288

= ACC: Variable Not Defined Error with Yes/No Arguments =

Article ID: 140288

Article Last Modified on 1/19/2007

-

APPLIES TO


 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q140288



Moderate: Requires basic macro, coding, and interoperability skills.



SYMPTOMS
When you use a Yes or a No argument with a method of the DoCmd object, you may receive the following error message when you attempt to compile the module:

Variable not Defined.



CAUSE
When you use a method of the DoCmd object in Visual Basic for Applications, Microsoft Access 7.0 and 97 will not accept a Yes or No argument. Yes and No are not system-defined constants. Unless otherwise user-defined, their values are Null.



RESOLUTION
Use True or -1 for the argument instead of Yes, and use False or 0 (zero) instead of No.

True and False are system-defined constants in Microsoft Access 7.0 and 97. The value of the constant True is -1, and the value of the constant False is 0. You can use the constant and its value interchangeably.



MORE INFORMATION
Most macro actions have a corresponding Visual Basic for Applications method for the DoCmd object. In macro actions, many times Yes and No are used in the different action arguments.

When you use methods of the DoCmd object, however, you must use either a system-defined constant, the underlying value of the constant, or a user- defined variable or constant that has been assigned the appropriate value.

Steps to Reproduce Behavior
  Open a Visual Basic for Applications module and type the following function:

     Function TestYesNo DoCmd.Setwarnings Yes End Function  On the Run menu, click Compile Loaded Modules. Note that you receive the compile error "Variable not Defined" for the Yes argument.  Change the function to read as follows:

     Function TestYesNo DoCmd.Setwarnings True End Function Note that this function compiles and work correctly. 

<div class="references_section">