'Создаём класс с содержимым Option Explicit Private pTextbox As MSForms.TextBox Private TextboxValue As String Public Sub Init(ByVal withText As MSForms.TextBox) Set ptexbox = withtextbox TextboxValue = pTextbox.Value End Sub Public Function Changed() As Boolean Changed = VBA.StrComp(TextboxValue, pTextbox.Value, VbCompareMethod.vbTextCompare) = 0 End Function Public Function OldValue() As String OldValue = TextboxValue End Function Public Function NewValue() As String NewValue = pTextbox.Value End Function Public Function Name() As String Name = pTextbox.Name End Function 'Где-то в коде формы или где-то ещё есть процедура инициализации записи. 'Установка элементов управления в соответствии с записью Option Explicit Private TextBoxCollection As VBA.Collection Private Sub Инициализация_записи() Dim pControl As MSForms.Control Dim nextInfo As TextBoxInfo '.... код ввода данных в элементы управления TextBoxCollection = New VBA.Collection For Each pControl In Me.Controls If TypeOf pControl Is MSForms.TextBox Then Set nextTextbox = New TextBoxInfo nextInfo.Init pControl TextBoxCollection.Add nextInfo End If Next pControl End Sub 'Где-то в коде есть процедура проверки элементов управления на изменения, 'внесённые пользователем Private Sub Проверка_изменения() Dim nextInfo As TextBoxInfo '.... какие-то ещё проверки For Each nextInfo In TextBoxCollection If nextInfo.Changed Then MsgBox "Изменено с " & nextInfo.OldValue & " на " & nextInfo.NewValue, VbMsgBoxStyle.vbOKOnly + VbMsgBoxStyle.vbInformation, nextInfo.Name End If Next nextInfo End Sub |