|May I suggest that you use the "pre" tags found above the message box when posting code? When you use the pre tags, the code will hold it's indented format and make it easier to read. See the code I posted below to see what I mean.|
That said, I assume that if you delete an entry on Sheet1, you want the last sets of data that were written to the other sheets deleted also. That is fairly easy to do.
However, if you want specific values deleted based on a specific value deleted from Sheet1 that's going to be a bit tougher.
Following the same "logic" used in the code you posted, if you added the code below before the End Sub line, it would delete the last row of values that were copied to the Invoice sheet.
Replicate the code for the other sheets to delete the last row on those sheets also.
Please note that I am following the same logic as in the code you posted, without saying that it is the most efficient way to write code. For example, your code checks the target column and value 3 times when it really only needs to be checked once. It also repeats a lot of other steps that could be condensed, but we'll save that for another time and another place.
Anyway, in similar fashion, this snippet should take care of the Invoice sheet. If you delete *any* value in Column 10 (J), the last set of data copied to the Invoice sheet will be deleted.
If Target.Column = 10 Then
If Target = "" Then
NxtInvRow = 21
If Sheets("Invoice").Cells(NxtInvRow, "C") <> "" Then
NxtInvRow = NxtInvRow + 1
LastInvRow = NxtInvRow - 1
Sheets("Invoice").Range("C" & LastInvRow).ClearContents
Sheets("Invoice").Range("D" & LastInvRow).ClearContents
Sheets("Invoice").Range("E" & LastInvRow).ClearContents
Sheets("Invoice").Range("K" & LastInvRow).ClearContents