Нужен макрос который бы 1) удалял 10 строк 2) выделял следующие 35 строк и копировал на новый лист 3) начинал с п.1 и так далее пока не кончатся таблицы Проблема в том что не получается передать переменные с координатами в Range. Вот код: [vba]
Код
Sub Разбивка_таблицы() p1 = "A1" '1 точка (Левый Верхний угол) p2 = "S9" '2ая точка (Правый нижний угол) p3 = p1 'неважно sourcews = ActiveSheet.Name 'Исходный лист Range("A:S").Find("Итого по абоненту").Select 'Нахождение ячейки ActiveCell.Offset(0, 1).Select 'Сдвиг выделения на две ячейки вправо ActiveCell.Offset(0, 1).Select Set Zapisi = Range(ActiveCell.Address) 'Считывание количества записей в таблице '----------------------- Do While Zapisi = 0 Range(p1).Select ActiveCell.Offset(9, 0).Select 'Сдвиг ВП вниз на 9 ячеек Set p1 = Range(ActiveCell.Address) 'Запоминаниие нового адреса '----- Range(p2).Select ActiveCell.Offset(34, 0).Select 'Сдвиг ПН вниз на 34 ячейки Set p2 = Range(ActiveCell.Address) 'Запись нового адреса '----- Range(p1, p2).Select 'Выделение нужной области Selection.Copy 'Копирование '----- Sheets.Add After:=ActiveSheet ActiveSheet.Paste 'Создание нового листа и копирования на него ActiveSheet.Previous.Select Zapisi = Zapisi - 34 Loop End Sub
[/vba]
Нужен макрос который бы 1) удалял 10 строк 2) выделял следующие 35 строк и копировал на новый лист 3) начинал с п.1 и так далее пока не кончатся таблицы Проблема в том что не получается передать переменные с координатами в Range. Вот код: [vba]
Код
Sub Разбивка_таблицы() p1 = "A1" '1 точка (Левый Верхний угол) p2 = "S9" '2ая точка (Правый нижний угол) p3 = p1 'неважно sourcews = ActiveSheet.Name 'Исходный лист Range("A:S").Find("Итого по абоненту").Select 'Нахождение ячейки ActiveCell.Offset(0, 1).Select 'Сдвиг выделения на две ячейки вправо ActiveCell.Offset(0, 1).Select Set Zapisi = Range(ActiveCell.Address) 'Считывание количества записей в таблице '----------------------- Do While Zapisi = 0 Range(p1).Select ActiveCell.Offset(9, 0).Select 'Сдвиг ВП вниз на 9 ячеек Set p1 = Range(ActiveCell.Address) 'Запоминаниие нового адреса '----- Range(p2).Select ActiveCell.Offset(34, 0).Select 'Сдвиг ПН вниз на 34 ячейки Set p2 = Range(ActiveCell.Address) 'Запись нового адреса '----- Range(p1, p2).Select 'Выделение нужной области Selection.Copy 'Копирование '----- Sheets.Add After:=ActiveSheet ActiveSheet.Paste 'Создание нового листа и копирования на него ActiveSheet.Previous.Select Zapisi = Zapisi - 34 Loop End Sub
Sub ttt() Dim i& i = 11 With Sheets("Лист3") Do While Cells(i, 1) <> "" Cells(i, 1).Resize(35, 19).Copy .Cells(Rows.Count, 1).End(xlUp)(2, 1).PasteSpecial Paste:=xlPasteValues i = i + 45 Loop End With Application.CutCopyMode = False End Sub
[/vba]
попробуйте так: [vba]
Код
Sub ttt() Dim i& i = 11 With Sheets("Лист3") Do While Cells(i, 1) <> "" Cells(i, 1).Resize(35, 19).Copy .Cells(Rows.Count, 1).End(xlUp)(2, 1).PasteSpecial Paste:=xlPasteValues i = i + 45 Loop End With Application.CutCopyMode = False End Sub