Используйте EntireRow
свойство объекта Range
, чтобы получить Target
диапазон строк:
Target.EntireRow.ClearContents
, а для очистки только измененных ячеек:
Target.ClearContents
и, если хотите,очистить ячейки в столбцах от B до, от J до M и от Q до S в той же строке, что и измененная ячейка, затем:
Intersect(Target.EntireRow, Range("B:D, J:M ,Q:S")).ClearContents
во всех случаях вы должны обращаться с вышеуказанными кодами, как показано в своем ответе Jeeped, т.е.:
убедитесь, что очистка не запускает событие Worksheet_Change
в бесконечном цикле, заключив код очистки между Application.EnableEvents = False
и Application.EnableEvents = True
убедитесь, что любая возможная ошибка не мешает форме достигать оператора Application.EnableEvents = True
, поместив оператор On Error GoTo safe_exit
перед Application.EnableEvents = False
и переместив Application.EnableEvents = True
сразу после оператора safe_exit: