Добрый день, можете помочь в решение задачи. Суть есть файл excel на листе ТЗ в колонке А вносится информация по контр агентам не уникальные значения, создано несколько листов, с иенами контрагентов (это переменное значение и будут изменяться наименование). При помощи кода информация берется из ячейки А1 каждого листа. В чем заключается проблема. Нужен макрос который из таблички на листе ТЗ выделял все строки всех контрагентов и копировал информацию в одноименные листы. Заранее спасибо.
Добрый день, можете помочь в решение задачи. Суть есть файл excel на листе ТЗ в колонке А вносится информация по контр агентам не уникальные значения, создано несколько листов, с иенами контрагентов (это переменное значение и будут изменяться наименование). При помощи кода информация берется из ячейки А1 каждого листа. В чем заключается проблема. Нужен макрос который из таблички на листе ТЗ выделял все строки всех контрагентов и копировал информацию в одноименные листы. Заранее спасибо.ТемТемыч
на листе ТЗ выделял все строки всех контрагентов и копировал информацию в одноименные листы
[vba]
Код
Sub TZ() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim Sht As Worksheet iLastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To iLastRow Set Sht = ThisWorkbook.Worksheets("" & Cells(i, "A") & "") With Sht iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 Range("A" & i & ":D" & i).Copy .Cells(iLR, "A") End With Next End Sub
[/vba]
Цитата
на листе ТЗ выделял все строки всех контрагентов и копировал информацию в одноименные листы
[vba]
Код
Sub TZ() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim Sht As Worksheet iLastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To iLastRow Set Sht = ThisWorkbook.Worksheets("" & Cells(i, "A") & "") With Sht iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 Range("A" & i & ":D" & i).Copy .Cells(iLR, "A") End With Next End Sub
Спасибо . Работает, но не до конца. 2 раза прогрузило и вылезла ошибка "Run-Time error '9':
И понял свою не доработку: 1. вставлять на листы нужно с с адреса B10 или можно сделать так, чтобы я мог менять куда должна вставится первая строка на листе 2. Как сделать так чтобы новые заменяли старые т.е. обновлялись ( сейчас добавляются)
Спасибо . Работает, но не до конца. 2 раза прогрузило и вылезла ошибка "Run-Time error '9':
И понял свою не доработку: 1. вставлять на листы нужно с с адреса B10 или можно сделать так, чтобы я мог менять куда должна вставится первая строка на листе 2. Как сделать так чтобы новые заменяли старые т.е. обновлялись ( сейчас добавляются)ТемТемыч
Макрос в стандартный модуль, запускать при активном листе ТЗ [vba]
Код
Sub TZ() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim FirstRow As Long Dim Sht As Worksheet iLastRow = Cells(Rows.Count, "A").End(xlUp).Row FirstRow = 10 For i = 2 To iLastRow If SheetExists("" & Cells(i, "A") & "") Then Set Sht = ThisWorkbook.Worksheets("" & Cells(i, "A") & "") With Sht iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 If iLR < 10 Then iLR = FirstRow Range("A" & i & ":D" & i).Copy .Cells(iLR, "A") End With Else MsgBox "В книге нет листа с именем: " & Cells(i, "A") End If Next End Sub
Function SheetExists(WSName) As Boolean On Error Resume Next SheetExists = Sheets(WSName).Name = WSName On Error GoTo 0 End Function
[/vba]
Цитата
2. Как сделать так чтобы новые заменяли старые
По какому столбцу проверять?
Цитата
1. вставлять на листы нужно с с адреса B10
Макрос в стандартный модуль, запускать при активном листе ТЗ [vba]
Код
Sub TZ() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim FirstRow As Long Dim Sht As Worksheet iLastRow = Cells(Rows.Count, "A").End(xlUp).Row FirstRow = 10 For i = 2 To iLastRow If SheetExists("" & Cells(i, "A") & "") Then Set Sht = ThisWorkbook.Worksheets("" & Cells(i, "A") & "") With Sht iLR = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 If iLR < 10 Then iLR = FirstRow Range("A" & i & ":D" & i).Copy .Cells(iLR, "A") End With Else MsgBox "В книге нет листа с именем: " & Cells(i, "A") End If Next End Sub
Function SheetExists(WSName) As Boolean On Error Resume Next SheetExists = Sheets(WSName).Name = WSName On Error GoTo 0 End Function
Kuzmich, Добрый день. Еще раз спасибо за код. Я единственное не могу понять до конца, как поменять чтобы информация не вырезалась, а только копировалась
Kuzmich, Добрый день. Еще раз спасибо за код. Я единственное не могу понять до конца, как поменять чтобы информация не вырезалась, а только копироваласьТемТемыч