powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставить разрыв страницы :)
8 сообщений из 8, страница 1 из 1
Вставить разрыв страницы :)
    #33028970
Фотография Desil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня!

Задача: нужно отформатировать экселевский документ, т.е. проставить различные высоты группы строк + вставить разрыв страницы, а потом все это повторить пока строки не кончатся. Пишу так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
    For Each rw In Worksheets("Лист1").Rows
    If rw.Row Mod  6  =  1  Then
        rw.RowHeight =  244 . 5 
    End If
    
    If rw.Row Mod  6  =  2  Then
        rw.RowHeight =  100 . 5 
    End If
    
    If rw.Row Mod  6  =  3  Then
        rw.RowHeight =  57 
    End If
    
    If rw.Row Mod  6  =  4  Then
        rw.RowHeight =  53 . 25 
    End If
    
    If rw.Row Mod  6  =  5  Then
        rw.RowHeight =  87 . 75 
    End If
    
    If rw.Row Mod  6  =  0  Then
    ' здесь нужно вставить разрыв страницы после текущей ячейки :)
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=rw.Cells(rw.Row,  1 )
    End If
       
    Next rw

Может быть вы чего посоветуете?.. Не сильна я как-то в VBA...
...
Рейтинг: 0 / 0
Вставить разрыв страницы :)
    #33029037
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DesilВсем доброго дня!

Задача: нужно отформатировать экселевский документ, т.е. проставить различные высоты группы строк + вставить разрыв страницы, а потом все это повторить пока строки не кончатся. Пишу так:
If rw.Row Mod 6 = 0 Then
' здесь нужно вставить разрыв страницы после текущей ячейки :)
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=rw.Cells(rw.Row, 1)
End If

Next rw[/src]
Может быть вы чего посоветуете?.. Не сильна я как-то в VBA...

А в чем проблема? Ошибка или не так получается, как надо? Последняя строчка - делается как раз нужный вам разрыв страницы.
...
Рейтинг: 0 / 0
Вставить разрыв страницы :)
    #33029112
Фотография Desil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне эксель сказал, что памяти не хватает... Попробую тот же цикл для нескольких страниц запустить...
...
Рейтинг: 0 / 0
Вставить разрыв страницы :)
    #33029208
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DesilМне эксель сказал, что памяти не хватает... Попробую тот же цикл для нескольких страниц запустить...

Судя по циклу, вы это делаете до конца документа, то есть - до 65536-ой строки... (то есть получается что-то около 65536 / 6 = 10922 разрывов страниц, верно?) Хотя б один разрыв страниц вставить получается? Сколько раз срабатывает цикл, на каком шаге вылетает ошибка?
...
Рейтинг: 0 / 0
Вставить разрыв страницы :)
    #33029381
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше цикл изменить, чтобы не ставить разрывы там, где они не нужны:
Код: plaintext
1.
2.
3.
4.
5.
x =  1 
While Cells(x, 1 )<>"" 'вместо 1 указать ту колонку, в которой есть данные до конца списка
    ......
    x = x +  1 
Wend
...
Рейтинг: 0 / 0
Вставить разрыв страницы :)
    #33029412
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Desilнужно отформатировать экселевский документ, т.е. проставить различные высоты группы строк + вставить разрыв страницы, а потом все это повторить пока строки не кончатсяАналогичный вопрос задавала год назад m_a_r_i_n_a
И Dimon94 тоже.
Не нашел приведенного когда-то исходника, помещаю его снова:
Код: plaintext
\'Проверим, есть ли  разрывы страниц и правильно ли они расставлены:\nwD.Windows( 1 ).View = xlPageBreakPreview\nWith shD                             \'лист с отчетом "для печати"\n    If .HPageBreaks.Count >  0  Then\n        Dim pb As HPageBreak, rngHPB As Range\n        Set rngHPB = .HPageBreaks(.HPageBreaks.Count).Location\n        i = rngHPB.Row               \'положение последнего разрыва\n        N = .UsedRange.Rows.Count    \'всего строк в документе\n        If N - i <  14  Then           \'14 - к-во строк в "пятке" документа:\n            .HPageBreaks.Add .Cells(N -  14 ,  1 )  \'она не должна разрываться.\n        End If\n        For Each pb In .HPageBreaks\n            Set rngHPB = pb.Location\n            i = rngHPB.Row -  1 \n            With .Range(Cells(i,  1 ), Cells(i,  15 )).Borders.Item(xlEdgeBottom)\n                .LineStyle = xlContinuous\n                .Weight = xlHairline\n            End With\n        Next pb\n    End If\nEnd With
...
Рейтинг: 0 / 0
Вставить разрыв страницы :)
    #33029448
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как говорят французы, "мысли на лестнице..."
В Вашем коде нет строки:
Код: plaintext
wD.Windows( 1 ).View = xlPageBreakPreview
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вставить разрыв страницы :)
    #35434318
mallory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так прокатит если написать -
Код: plaintext
Application.ActiveSheet.HPageBreaks.Add $H$ 20 
Чтоб то, что ниже 20-й строки уже стало на другой странице ?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставить разрыв страницы :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]