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

Подскажите, как можно ПРОГРАМНО вывести в ячейку количество страниц и номер текущей страницы при печати? Макросом или внешней операцией над объектом Excel.

Использование колонтитулов не подходит.
Я так понял, что как-то можно пользоваться коллекциями PageBrake, только у меня что-то то ли они не срабатывают, то ли я их не так использую...

Поиск разумеется юзал, но применить это к свойе задаче так и не получилось.

Спасибо!
...
Рейтинг: 0 / 0
Вопрос по Excel.
    #34866839
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так (самому недавно интересно было), хотя не уверен в оптимальности.


Код: 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.
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.
Sub test()
'Нумерация страниц, страница ставится в последней строке странице и в средней колонке
Dim printRng As Range
Dim columnToPage As Long
Dim countHPageBreak As Long, countVPageBreak As Long
Dim hPB As HPageBreak, vPB As VPageBreak
Dim pageLastRow() As Variant, pageColumn() As Variant
Dim x As Long
Dim i As Long, j As Long, ihPB As Long, jvPB As Long
    
    columnToPage =  5  ' в какой колонке ставить номер

  With ActiveSheet
    
    If .PageSetup.PrintArea <> "" Then
        Set printRng = .Range(.PageSetup.PrintArea)
    Else
        Set printRng = .UsedRange
    End If
    
    countHPageBreak = .HPageBreaks.Count
    ReDim pageLastRow(countHPageBreak) As Variant
 
    i =  0 
    For Each hPB In .HPageBreaks
     pageLastRow(i) = hPB.Location.Row -  1 
     i = i +  1 
    Next hPB
    pageLastRow(countHPageBreak) = printRng.Rows.Count + printRng.Row -  1 
        
    countVPageBreak = .VPageBreaks.Count
    ReDim pageColumn(countVPageBreak) As Variant
    
    j =  0 
    x =  1 
    For Each vPB In .VPageBreaks
     pageColumn(j) = Fix((x + vPB.Location.Column -  1 ) /  2 )
     j = j +  1 
     x = vPB.Location.Column
    Next vPB
    pageColumn(countVPageBreak) = Fix((x + printRng.Columns.Count + printRng.Column -  1 ) /  2 )

    
    For jvPB =  0  To countVPageBreak
        
        For ihPB =  0  To countHPageBreak
         .Cells(pageLastRow(ihPB), pageColumn(jvPB)).Value _
            = "Cтраница " & (countHPageBreak +  1 ) * jvPB + ihPB +  1  & " из " & (countHPageBreak +  1 ) * (countVPageBreak +  1 )
        Next ihPB
    
    Next jvPB
    
  End With
End Sub
...
Рейтинг: 0 / 0
Вопрос по Excel.
    #34869807
Фотография Mix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, логика понятна.
Буду разбираться.

Спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по Excel.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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