Я хочу восстановить информацию о строке, которая была удалена в ListObject. Мой текущий код работает, когда я удаляю строку, которая не является последней строкой, или когда это единственная строка в ListObject. Я использую событие Worksheet_Change, но оно работает некорректно.
Примечание: Причина, по которой я хочу восстановить удаленную информацию, заключается в том, что она связана с другой таблицей, которые необходимо обновить после события удаления.
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lo As ListObject
Dim data_row As ListRow
Dim deleted_row As Long
Set lo = ActiveSheet.ListObjects("Users")
If Not Intersect(Target, lo.DataBodyRange) Is Nothing Then
Application.EnableEvents = False
deleted_row = Target.Row - lo.HeaderRowRange.Row
Debug.Print "Deleted row: " & deleted_row
Application.Undo
Set data_row = lo.ListRows(deleted_row)
Debug.Print "Data from deleted row: " & vbNewLine & _
"Id: " & data_row.Range(1).Value & vbNewLine & _
"Name: " & data_row.Range(2).Value & vbNewLine & _
"LastName: " & data_row.Range(3).Value
Application.Repeat
Application.EnableEvents = True
End If
End Sub
Графический пример:
Этот снимок показывает мой ListObject пользователей, который имеет 2 строки.
Когда я удаляю первую строку, событие Worksheet_Change работает более корректно. Результат подсвечивается и отображается в окне «Немедленно».
Но когда я удаляю последнюю строку, событие Worksheet_Change даже не запускается.
Как мне этого добиться? Любая помощь будет оценена.