Добрый день, ребята! Есть 4 ячейки. Первая - список значений, остальные - заполнены данными. Нужно, чтобы при выборе любого нового значения в первой ячейке, данные в соседних стирались. Нюанс в том, что это целая таблица и нужно, чтобы все строки аналогично работали. Спасибо)
Добрый день, ребята! Есть 4 ячейки. Первая - список значений, остальные - заполнены данными. Нужно, чтобы при выборе любого нового значения в первой ячейке, данные в соседних стирались. Нюанс в том, что это целая таблица и нужно, чтобы все строки аналогично работали. Спасибо)Leariska
Private Sub Worksheet_Change(ByVal Target As Range) Dim r& If Target.Address Like "$A$*" Then r = Target.Row Range(Cells(r, 2), Cells(r, 4)).ClearContents End If End Sub
[/vba]
Здравствуйте, так нужно?[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim r& If Target.Address Like "$A$*" Then r = Target.Row Range(Cells(r, 2), Cells(r, 4)).ClearContents End If End Sub
В этом макросе не очень страшно, но... Процедура события листа. Срабатывает каждый раз при изменении на листе. Здесь макрос срабатывает два раза. Если, к примеру, менять три ячейки по отдельности, макрос сделает 4 прохода. А если цикл?
Перед изменениями нужно отключать события, после изменений - включать: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 Then Exit Sub ' шапку чистить не нужно
If Not Application.Intersect(Range("A:A"), Target) Is Nothing Then Application.EnableEvents = False Cells(Target.Row, 2).Resize(1, 3).ClearContents Application.EnableEvents = True End If End Sub
[/vba]
В этом макросе не очень страшно, но... Процедура события листа. Срабатывает каждый раз при изменении на листе. Здесь макрос срабатывает два раза. Если, к примеру, менять три ячейки по отдельности, макрос сделает 4 прохода. А если цикл?
Перед изменениями нужно отключать события, после изменений - включать: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 Then Exit Sub ' шапку чистить не нужно
If Not Application.Intersect(Range("A:A"), Target) Is Nothing Then Application.EnableEvents = False Cells(Target.Row, 2).Resize(1, 3).ClearContents Application.EnableEvents = True End If End Sub