powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Итоги по страницам (вставить пять дополнительных строк)
1 сообщений из 1, страница 1 из 1
Итоги по страницам (вставить пять дополнительных строк)
    #39741514
GorOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В сети много примеров расстановки итогов по странице, когда в конце вставляется 1-2 дополнительные строки. Мне понадобилось вставлять не одну, а пять строчек в конце каждой страницы. Перед началом работы макроса можно в переменную пометить количество страниц на листе документа и в цикле, в конце каждой страницы вставить требуемые строки. На маленьких документах все работало, но на больших документах вставляя по 5 строк мы меняем общее количество страниц на листе и цикл прекращается еще до того как достигнута последняя страница.
Как правильно написать условие в цикле (Do While) ? Сейчас сделал вообще без цикла, но некрасиво.
Код: vbnet
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Option Explicit

Const FIRST_ROW& = 9
Const FIRST_COL$ = "AA"
Const LAST_COL$ = "AJ"
Const ROW_HEIGHT = 11.25
Sub CreatePageSubtotals()
On Error GoTo ErrorHandler
' Итоги по страницам
Dim viewState, hpb As HPageBreak, iRow1&, iRow2&, iRowPB&, iPB&, PN&
ThisWorkBook.Sheets("стр.2").Select
viewState = ActiveWindow.View
ActiveWindow.View = xlPageBreakPreview


  PN = 1
CicleStart:
    iRow2 = ActiveSheet.HPageBreaks(PN).Location.Row
        
    PN = PN + 1
    Rows(iRow2).Insert
    Cells(iRow2, "B") = PN '"Итого по странице"
    
    iRow2 = iRow2 + 1
    
    Rows(iRow2).Insert
    Cells(iRow2, "B") = iPB '"Порядковых номеров на странице"
    iRow2 = iRow2 + 1
             
    Rows(iRow2).Insert
    Cells(iRow2, "B") = iRow2 '"На сумму фактически:"
    
       
    iRow2 = iRow2 + 1
    Rows(iRow2).PageBreak = xlPageBreakManual
    
    GoTo CicleStart  'выход будет по ощибке ActiveSheet.HPageBreaks(PN).Location.Row
    
ErrorHandler:

   iRow2 = Cells(Rows.Count, 1).End(xlUp).Row + 1
    
    Rows(iRow2).Insert
    Cells(iRow2, "B") = PN '"Итого по странице"
    
    iRow2 = iRow2 + 1
    
    Rows(iRow2).Insert
    Cells(iRow2, "B") = iPB '"Порядковых номеров на странице"
    iRow2 = iRow2 + 1
             
    Rows(iRow2).Insert
    Cells(iRow2, "B") = iRow2 '"На сумму фактически:"
End Sub
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Итоги по страницам (вставить пять дополнительных строк)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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