Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставить разрыв страницы :) / 8 сообщений из 8, страница 1 из 1
21.04.2005, 21:57
    #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
22.04.2005, 00:49
    #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
22.04.2005, 07:47
    #33029112
Desil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставить разрыв страницы :)
Мне эксель сказал, что памяти не хватает... Попробую тот же цикл для нескольких страниц запустить...
...
Рейтинг: 0 / 0
22.04.2005, 09:28
    #33029208
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставить разрыв страницы :)
DesilМне эксель сказал, что памяти не хватает... Попробую тот же цикл для нескольких страниц запустить...

Судя по циклу, вы это делаете до конца документа, то есть - до 65536-ой строки... (то есть получается что-то около 65536 / 6 = 10922 разрывов страниц, верно?) Хотя б один разрыв страниц вставить получается? Сколько раз срабатывает цикл, на каком шаге вылетает ошибка?
...
Рейтинг: 0 / 0
22.04.2005, 10:52
    #33029381
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставить разрыв страницы :)
Лучше цикл изменить, чтобы не ставить разрывы там, где они не нужны:
Код: plaintext
1.
2.
3.
4.
5.
x =  1 
While Cells(x, 1 )<>"" 'вместо 1 указать ту колонку, в которой есть данные до конца списка
    ......
    x = x +  1 
Wend
...
Рейтинг: 0 / 0
22.04.2005, 11:01
    #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
22.04.2005, 11:09
    #33029448
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставить разрыв страницы :)
Как говорят французы, "мысли на лестнице..."
В Вашем коде нет строки:
Код: plaintext
wD.Windows( 1 ).View = xlPageBreakPreview
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
16.07.2008, 16:21
    #35434318
mallory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставить разрыв страницы :)
А вот так прокатит если написать -
Код: plaintext
Application.ActiveSheet.HPageBreaks.Add $H$ 20 
Чтоб то, что ниже 20-й строки уже стало на другой странице ?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставить разрыв страницы :) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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