Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по Excel. / 3 сообщений из 3, страница 1 из 1
13.10.2007, 11:07
    #34866558
Mix
Mix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Excel.
Добрый день.

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

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

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

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


Код: 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
15.10.2007, 17:28
    #34869807
Mix
Mix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Excel.
Вообще, логика понятна.
Буду разбираться.

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


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