Добрый день. Есть макрос очистки таблицы, который очищает определённые ячейки ячейки. В примере это ячейки в которых написаны цифры 1 и 2. Данные удалять нельзя. [vba]
Код
Sub Макрос() Range("B1,E1,A2,A2:F3,B4,E4,A5:F6").Select Range("A5").Activate Selection.ClearContents End Sub
[/vba] Количество строк с цифрами 2 может изменяться. Подскажите, пожалуйста, как сделать так, чтобы при добавлении или удалении строк с двойками изменялся и диапазон работы макроса.
Добрый день. Есть макрос очистки таблицы, который очищает определённые ячейки ячейки. В примере это ячейки в которых написаны цифры 1 и 2. Данные удалять нельзя. [vba]
Код
Sub Макрос() Range("B1,E1,A2,A2:F3,B4,E4,A5:F6").Select Range("A5").Activate Selection.ClearContents End Sub
[/vba] Количество строк с цифрами 2 может изменяться. Подскажите, пожалуйста, как сделать так, чтобы при добавлении или удалении строк с двойками изменялся и диапазон работы макроса.Teem
Извтняюсь, что непонятно объяснил. В ячейках, обозначенных цифрами будет разная информация: цифры, текст, значения из выпадающего списка. В ячейках, обозначенных как "данные" содержатся формулы и наименования строк и столбцов, которые не изменяются. Строки, условно обозначенные двойками, будут добавляться к уже имеющимся, то есть может быть и три строки подряд, и десять. Соответственно надо чтобы макрос очищал ячейки с условными единицами и двойками независимо от количества строк с условными двойками.
Извтняюсь, что непонятно объяснил. В ячейках, обозначенных цифрами будет разная информация: цифры, текст, значения из выпадающего списка. В ячейках, обозначенных как "данные" содержатся формулы и наименования строк и столбцов, которые не изменяются. Строки, условно обозначенные двойками, будут добавляться к уже имеющимся, то есть может быть и три строки подряд, и десять. Соответственно надо чтобы макрос очищал ячейки с условными единицами и двойками независимо от количества строк с условными двойками.Teem
Manyasha, 2-ки и 1-ки в примере даны для обозначения ячеек необходимых для очистки. Реально там может быть любое число и текст. Может я не с той стороны захожу? Имеющийся макрос был создан просто путём записи действий. По идее тут просится цикл, но как его реализовать на практике, ведь нужны условия начала и завершения и при этом не удалить необходимые ячейки?
Manyasha, 2-ки и 1-ки в примере даны для обозначения ячеек необходимых для очистки. Реально там может быть любое число и текст. Может я не с той стороны захожу? Имеющийся макрос был создан просто путём записи действий. По идее тут просится цикл, но как его реализовать на практике, ведь нужны условия начала и завершения и при этом не удалить необходимые ячейки?Teem
Сообщение отредактировал Teem - Среда, 25.02.2015, 08:15
Для этого нужен кусок РЕАЛЬНОЙ (или очень похожей) таблицы, чтобы появилась возможность зацепиться за что-то, что отличает строки с данными от тех строк, которые нужно удалить.
Для этого нужен кусок РЕАЛЬНОЙ (или очень похожей) таблицы, чтобы появилась возможность зацепиться за что-то, что отличает строки с данными от тех строк, которые нужно удалить._Boroda_
Sub tt() r1_ = Range("A" & Rows.Count).End(xlUp).Row For i = 4 To r1_ If Range("D" & i - 1) = Range("D3") Then Range("D" & i).ClearContents If Range("A" & i) = "" Then If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents End If Next i End Sub
[/vba]
Еще вариант [vba]
Код
Sub tt() r1_ = Range("A" & Rows.Count).End(xlUp).Row For i = 4 To r1_ If Range("D" & i - 1) = Range("D3") Then Range("D" & i).ClearContents If Range("A" & i) = "" Then If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents End If Next i End Sub
_Boroda_, Leanna, спасибо огромное! Хотел взять второй вариант за лаконичность, но он очищает абонентские работы только у первого клиента. Взял первый вариант - очищает все необходимые ячейки.
_Boroda_, Leanna, спасибо огромное! Хотел взять второй вариант за лаконичность, но он очищает абонентские работы только у первого клиента. Взял первый вариант - очищает все необходимые ячейки.Teem
н очищает абонентские работы только у первого клиента
Да, пропустил я этот момент. Тогда так можно: [vba]
Код
Sub tt() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(xlUp).Row For i = 4 To r1_ If Range("D" & i - 1) = Range("D3") Then For j = 4 To 100 Step 3 Cells(i, j).ClearContents Next j End If If Range("A" & i) = "" Then If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents End If Next i Application.ScreenUpdating = 1 End Sub
н очищает абонентские работы только у первого клиента
Да, пропустил я этот момент. Тогда так можно: [vba]
Код
Sub tt() Application.ScreenUpdating = 0 r1_ = Range("A" & Rows.Count).End(xlUp).Row For i = 4 To r1_ If Range("D" & i - 1) = Range("D3") Then For j = 4 To 100 Step 3 Cells(i, j).ClearContents Next j End If If Range("A" & i) = "" Then If Range("A" & i - 1) = "доп. работы" Or Range("A" & i - 1) = "" Then Rows(i).ClearContents End If Next i Application.ScreenUpdating = 1 End Sub