Доброго времени суток!!! Господа, подскажите пожалуйста такой вопрос... Есть табличка, подобие ЗП, и нужно что бы на отдельных листах формировались расчетные листки, по каждому сотруднику, которые есть в табличке. Записать макрос с созданием этого листка для каждого сотрудника и прописать туда ссылки на нужные ячейки с общей таблицы не проблема... НО делать это для каждого сотрудника долго((((... Так вот суть вопроса... Подскажите, как сделать цикл, что бы он проходил по всей табличке и для каждого сотрудника создавал расчетный листок. Пример файла прилагаю. Заранее благодарен за любую помощь. Всем добра )
Доброго времени суток!!! Господа, подскажите пожалуйста такой вопрос... Есть табличка, подобие ЗП, и нужно что бы на отдельных листах формировались расчетные листки, по каждому сотруднику, которые есть в табличке. Записать макрос с созданием этого листка для каждого сотрудника и прописать туда ссылки на нужные ячейки с общей таблицы не проблема... НО делать это для каждого сотрудника долго((((... Так вот суть вопроса... Подскажите, как сделать цикл, что бы он проходил по всей табличке и для каждого сотрудника создавал расчетный листок. Пример файла прилагаю. Заранее благодарен за любую помощь. Всем добра )savrix
Вот заготовка, ибо таблички лень прописывать [vba]
Код
Option Explicit
Public Sub setLiist() Dim ws As Worksheet Dim i As Integer, rowLast% Dim odict As Object
Set ws = ThisWorkbook.Worksheets("Заполнить") Do While True i = i + 1 If ws.Cells(i, 3).Value = "ИТОГО" Then rowLast = i - 1 Exit Do End If Loop Set odict = CreateObject("Scripting.Dictionary") odict.CompareMode = 1
For i = 1 To ThisWorkbook.Worksheets.Count odict.Add ThisWorkbook.Worksheets(i).Name, 1 Next i
With ws For i = 2 To rowLast If .Cells(i, 3).Value <> "" Then If Not odict.exists(.Cells(i, 3).Value) Then 'исключаем повторы odict.Add .Cells(i, 3).Value, 1 Worksheets.Add.Name = .Cells(i, 3).Value With ThisWorkbook.Worksheets(.Cells(i, 3).Value) ' 'здесь добавить код для заполнения листов ' End With Else MsgBox "Найден повтор: " & .Cells(i, 3).Address, 48, "Повтор!" Exit Sub End If End If Next i End With End Sub
[/vba]
Вот заготовка, ибо таблички лень прописывать [vba]
Код
Option Explicit
Public Sub setLiist() Dim ws As Worksheet Dim i As Integer, rowLast% Dim odict As Object
Set ws = ThisWorkbook.Worksheets("Заполнить") Do While True i = i + 1 If ws.Cells(i, 3).Value = "ИТОГО" Then rowLast = i - 1 Exit Do End If Loop Set odict = CreateObject("Scripting.Dictionary") odict.CompareMode = 1
For i = 1 To ThisWorkbook.Worksheets.Count odict.Add ThisWorkbook.Worksheets(i).Name, 1 Next i
With ws For i = 2 To rowLast If .Cells(i, 3).Value <> "" Then If Not odict.exists(.Cells(i, 3).Value) Then 'исключаем повторы odict.Add .Cells(i, 3).Value, 1 Worksheets.Add.Name = .Cells(i, 3).Value With ThisWorkbook.Worksheets(.Cells(i, 3).Value) ' 'здесь добавить код для заполнения листов ' End With Else MsgBox "Найден повтор: " & .Cells(i, 3).Address, 48, "Повтор!" Exit Sub End If End If Next i End With End Sub