A better way to handle this is to check for the empty field when the user OKs or saves the form rather than on the valid method of the control. This way the user can enter fields in any order, and you don't get the problems with the control's valid code when escaping. To ensure your 'form valid' code also runs if the user clicks the close button on the form, call it from the form's QueryUnload method, and use NODEFAULT to prevent the form from closing.