Помогите починить скрипт, автор не я, и в vba не силён.
PrivateSub Worksheet_Change(ByVal Target As Range) Dim irow AsLong, i AsLong, List AsString
Application.EnableEvents = False IfNot Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) IsNothingThen For Each iCell In Target IfInStr("ИноеЗаказчикПодрядчик", iCell) And iCell <> ""Then
SelectCase iCell.Value Case"Заказчик": List = "Подрядчики" Case"Подрядчик": List = "Заказчики" Case"Иное": List = "Иное" EndSelect
irow = Sheets(List).Range("A" & Rows.Count).End(xlUp).Row + 1 For i = 2To irow - 1 If iCell.Offset(0, -1) = Sheets(List).Range("A" & i) Then irow = i Next i
Rows(iCell.Row).Copy (Sheets(List).Rows(irow)) Else
iCell.Value = "" EndIf Next EndIf
Application.EnableEvents = True EndSub
Насколько я понял, скрипт копирует на лист строки исходя из значений в ячейке на "основном" листе: Если "Заказчик" на лист "Подрядчики" Если "Подрядчик" на лист "Заказчики" Если "Иное" на лист "Иное" - но он не проверяет наличие такой строки на остальных листах, получается если человек ошибся, а затем исправил, то строка будет на двух листах. Ещё вопрос, как его запустить, что бы пересоздал "подчинённые" листы по новой? Файл прикрепляю. Благодарю за помощь!
Приветствую!
Помогите починить скрипт, автор не я, и в vba не силён.
PrivateSub Worksheet_Change(ByVal Target As Range) Dim irow AsLong, i AsLong, List AsString
Application.EnableEvents = False IfNot Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) IsNothingThen For Each iCell In Target IfInStr("ИноеЗаказчикПодрядчик", iCell) And iCell <> ""Then
SelectCase iCell.Value Case"Заказчик": List = "Подрядчики" Case"Подрядчик": List = "Заказчики" Case"Иное": List = "Иное" EndSelect
irow = Sheets(List).Range("A" & Rows.Count).End(xlUp).Row + 1 For i = 2To irow - 1 If iCell.Offset(0, -1) = Sheets(List).Range("A" & i) Then irow = i Next i
Rows(iCell.Row).Copy (Sheets(List).Rows(irow)) Else
iCell.Value = "" EndIf Next EndIf
Application.EnableEvents = True EndSub
Насколько я понял, скрипт копирует на лист строки исходя из значений в ячейке на "основном" листе: Если "Заказчик" на лист "Подрядчики" Если "Подрядчик" на лист "Заказчики" Если "Иное" на лист "Иное" - но он не проверяет наличие такой строки на остальных листах, получается если человек ошибся, а затем исправил, то строка будет на двух листах. Ещё вопрос, как его запустить, что бы пересоздал "подчинённые" листы по новой? Файл прикрепляю. Благодарю за помощь!ITmanCityLoid