ник: Lukas
+ к варианту Анатолия:
1. Если изменить значение поля, а потом не покидая записи вернуть в исходное (например True-False-True), то не удастся определить, так как .Value=.OldValue
2. Если изменялись несколько полей, получим несколько контролов, а какой именно (первый) вызвал событие Dirty? Но может это и неважно.
3. Вариант позволяет определить изменения, внесенные программно.
Исчо вариант:
Private ctrl As Control
Private Sub Form_Dirty(Cancel As Integer)
Set ctrl = Me.ActiveControl
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
MsgBox ctrl.Name
Set ctrl = Nothing
End Sub
|
Этот вариант:
1. Однозначно определяет первый контрол, который вызвал событие изменения записи, даже если его значение вернули взад.
2. Не определяет контрол при программном изменении значения поля.