Excel không có sự kiện VBA để xóa ô.
Bạn có thể sử dụng một sự kiện Worksheet_Change. Sự kiện này sẽ được kích hoạt bất cứ khi nào một ô trong trang tính được thay đổi. Nếu, sau khi thay đổi, ô trống, sẽ có lý do cho dù người dùng vừa xóa một ô hay nhấn enter khi chỉnh sửa một ô đã trống, mà không ghi bất cứ điều gì vào ô.
Sự kiện thay đổi có thể được thiết lập để chỉ giám sát một phạm vi cụ thể, giả sử, các cột từ A đến F và sẽ chỉ xóa hàng nếu một ô trong các cột này trống sau khi thay đổi.
Với điều này như một tiền đề, đây là một số mã thực hiện những gì tôi mô tả.
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
Sao chép mã này. Sau đó nhấp chuột phải vào tab trang tính, chọn "Xem mã" trong menu ngữ cảnh và dán mã vào cửa sổ mã. Hãy nhớ lưu tệp dưới dạng tệp .xlsm hỗ trợ macro.