Помогите починить скрипт, автор не я, и в vba не силён.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim irow As Long, i As Long, List As String Application.EnableEvents = False If Not Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) Is Nothing Then For Each iCell In Target If InStr("ИноеЗаказчикПодрядчик", iCell) And iCell <> "" Then
Select Case iCell.Value Case "Заказчик": List = "Подрядчики" Case "Подрядчик": List = "Заказчики" Case "Иное": List = "Иное" End Select
irow = Sheets(List).Range("A" & Rows.Count).End(xlUp).Row + 1 For i = 2 To 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 = "" End If Next End If Application.EnableEvents = True End Sub
[/vba]
Насколько я понял, скрипт копирует на лист строки исходя из значений в ячейке на "основном" листе: Если "Заказчик" на лист "Подрядчики" Если "Подрядчик" на лист "Заказчики" Если "Иное" на лист "Иное" - но он не проверяет наличие такой строки на остальных листах, получается если человек ошибся, а затем исправил, то строка будет на двух листах. Ещё вопрос, как его запустить, что бы пересоздал "подчинённые" листы по новой? Файл прикрепляю. Благодарю за помощь!
Приветствую!
Помогите починить скрипт, автор не я, и в vba не силён.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim irow As Long, i As Long, List As String Application.EnableEvents = False If Not Intersect(Range("B2:B" & Range("A1").End(xlDown).Row), Target) Is Nothing Then For Each iCell In Target If InStr("ИноеЗаказчикПодрядчик", iCell) And iCell <> "" Then
Select Case iCell.Value Case "Заказчик": List = "Подрядчики" Case "Подрядчик": List = "Заказчики" Case "Иное": List = "Иное" End Select
irow = Sheets(List).Range("A" & Rows.Count).End(xlUp).Row + 1 For i = 2 To 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 = "" End If Next End If Application.EnableEvents = True End Sub
[/vba]
Насколько я понял, скрипт копирует на лист строки исходя из значений в ячейке на "основном" листе: Если "Заказчик" на лист "Подрядчики" Если "Подрядчик" на лист "Заказчики" Если "Иное" на лист "Иное" - но он не проверяет наличие такой строки на остальных листах, получается если человек ошибся, а затем исправил, то строка будет на двух листах. Ещё вопрос, как его запустить, что бы пересоздал "подчинённые" листы по новой? Файл прикрепляю. Благодарю за помощь!ITmanCityLoid