I can't believe I've lost so much of my life over this, but I think I have the solution, which incorporates your suggestion:
Code:
Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 3162 Then
Me.TaskID.Undo
Me.DocumentTable_TaskID.Value = 16
Response = acDataErrContinue
End If
End Sub
Error 3162 is "You tried to assign a Null value to a variable that is not a Variant data type". It seems that the error was kicking in before any of the control's events had a chance to fire. Is that a likely explanation? Does the above look all right (it seems to do the trick)?