Okay, I think I understand. Unfortunately, the only way to reset the Dirty property of the form is to Undo it, which means any other changes will also reset. For your complex forms, you may have to perform the auto-save and cancel in each updatable control's particular event rather than waiting until the form's event at the end. In other words, instead of doing a "catch-all" validation, you may have to do individual validations. Just a thought...
PS. Another thought is to store the initial state of the form into memory and then compare it with the current state when the form's BeforeUpdate event fires. So, even if the user makes any changes, which sets the Dirty property to True, if the initial and current states match, then nothing will be harmed when you issue a Me.Undo, which would then preserve the UpdateBy/On values.