masterNike Цитата: Затем макрос берет все строки из Rawdata и вставляет их на страницу Layout. Если i=150, то все записи вставляются попорядку, пока не закчнчивается лист, потом переход на другой лист
Какой лист заканчивается?
Цитата: Нужно сделать так, что бы на каждую страницу Layout
А как можно сделать в рабочей книге несколько листов с одним именем layout?
Короче, набор процедур, для копирования произвольной таблицы, имеющей заголовок, заданным количеством строк на вновь создаваемые рабочие листы
[more]
Код: Option Explicit
'Копирование заголовка таблицы
Private Sub CopyHead(ByVal headRange As Range, ByVal toSheet As Worksheet)
toSheet.Range(toSheet.Cells(1&, 1&), _
toSheet.Cells(headRange.Rows.Count, _
headRange.Columns.Count)).Value = headRange.Value
End Sub
'копирование таблицы листа sourceSheet числом строк RowCount
'на вновь создаваемые рабочие листы листы
Private Sub MakeSubLists(ByVal sourceSheet As Worksheet, ByVal RowCount As Long)
Dim iRow As Long, headRange As Range, toSheet As Worksheet
Dim firstRow As Long, lastRow As Long
Dim firstCol As Long, lastCol As Long
Dim vRows As Long, vCols As Long
firstRow = sourceSheet.UsedRange.Row
vRows = sourceSheet.UsedRange.Rows.Count
lastRow = vRows + firstRow - 1&
firstCol = sourceSheet.UsedRange.Column
vCols = sourceSheet.UsedRange.Columns.Count
lastCol = vCols + firstCol - 1&
Set headRange = sourceSheet.Range(sourceSheet.Cells(firstRow, firstCol), _
sourceSheet.Cells(firstRow, lastCol))
iRow = firstRow + 1&: vRows = RowCount
Do Until iRow > lastRow
Set toSheet = Worksheets.Add
CopyHead headRange, toSheet
If (iRow + RowCount - 1&) >= lastRow Then vRows = lastRow - iRow + 1&
toSheet.Range(toSheet.Cells(2&, 1&), toSheet.Cells(vRows + 1&, vCols)).Value = _
sourceSheet.Range(sourceSheet.Cells(iRow, firstCol), _
sourceSheet.Cells(iRow + vRows - 1&, lastCol)).Value
iRow = iRow + RowCount
Loop
End Sub
Public Sub test()
MakeSubLists ActiveSheet, 3
End Sub