В Excel нет события VBA для удаления ячейки.
Вы можете использовать событие Worksheet_Change. Это событие будет срабатывать при каждом изменении ячейки на листе. Если после изменения ячейка пуста, это означает, что пользователь только что удалил ячейку или нажал клавишу ввода после редактирования ячейки, которая уже была пустой, без записи чего-либо в ячейку.
Событие изменения может быть настроено для отслеживания только определенного диапазона, скажем, столбцов от A до F, и удалит строку, только если ячейка в этих столбцах пуста после изменения.
С этим преамбулой, вот код, который делает то, что я описываю.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:F")) Is Nothing Then
If Len(Trim(Target.Value)) = 0 Then
MsgBox "Cell was deleted - now deleting row" ' remove this line if you dont want the message
Application.EnableEvents = False ' turn off event monitoring so the routine does not loop
Selection.EntireRow.Delete
Application.EnableEvents = True ' turn on event monitoring
End If
End If
End Sub
Скопируйте этот код. Затем щелкните правой кнопкой мыши вкладку листа, выберите "Просмотреть код" в контекстном меню и вставьте код в окно кода. Не забудьте сохранить файл как файл .xlsm с поддержкой макросов.