powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не могу получить коллекцию разрывов страниц
5 сообщений из 5, страница 1 из 1
Не могу получить коллекцию разрывов страниц
    #35140806
noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub Test()
    Dim sh As Worksheet
    Dim PBs As HPageBreaks
    Dim pb As HPageBreak
    Dim counter As Long

    
    Set sh = ActiveSheet
    sh.ResetAllPageBreaks
    Set PBs = sh.HPageBreaks
    counter = PBs.Count
    counter =  0 
    For Each pb In PBs
            counter = counter +  1 
    Next
End Sub
Вываливается на цикле с ошибкой. Причем если создать новый файл, написать там новый макрос, то он может работать. Так что кого заинтересует попробуйте мой файл. Если смотреть в отладчике, то PBs.Count = 5. Т.е. коллекция не пустая.
...
Рейтинг: 0 / 0
Не могу получить коллекцию разрывов страниц
    #35142285
AndreyArtemev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызыв sh.ResetAllPageBreaks - убил все разрывы страниц.

1. Закоментируй его
2. Добавь разрывы

и все заработает
...
Рейтинг: 0 / 0
Не могу получить коллекцию разрывов страниц
    #35142515
tolikt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обсуждалось тут. Можно поискать.
Поиск по HPageBreaks
И, например, Разрыв страницы в Excel

Если я правильно понял, то метод HPageBreaks очень глючный в макросах и приходится делать следующее:

1. Использовать ActiveSheet.DisplayPageBreaks = True
что тоже не всегда помогает.

или более надёжно:
2. при ScreenUpdating = True как бы "передёрнуть" страницу вверх-вниз методом ScrollRow

Т.е. пример от noob должен выглядить примерно так:
Код: plaintext
Sub Test()\n    Dim sh As Worksheet\n    Dim PBs As HPageBreaks\n    Dim pb As HPageBreak\n    Dim counter As Long\n\n    Dim CurScrlR As Long                   \' добавлено \n    Application.ScreenUpdating = True \' добавлено  \' ОБЯЗАТЕЛЬНО !!!\n\n    Set sh = ActiveSheet\n    sh.ResetAllPageBreaks\n    Set PBs = sh.HPageBreaks\n    counter = PBs.Count\n    counter =  0 \n    For Each pb In PBs\n        CurScrlR = ActiveWindow.ScrollRow     \' добавлено     \' номер верхней строки текущего окна\n        ActiveWindow.ScrollRow =  1               \' добавлено     \' "прокрутка" окна до 1й строки\n        ActiveWindow.ScrollRow = CurScrlR     \' добавлено     \' "прокрутка" до текущей строки обратно\n        counter = counter +  1 \n    Next\nEnd Sub
...
Рейтинг: 0 / 0
Не могу получить коллекцию разрывов страниц
    #35144242
noob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все темы я читал перед своим постом. Не работает это.
Пробовал и
Application.ScreenUpdating = True
и
ActiveWindow.View = xlNormalView
все фигня, начинает глючить, если последняя печатаемая ячейка находится в конце последней страницы.

решилось просто:

Sub Test()
Dim sh As Worksheet
Dim PBs As HPageBreaks
Dim pb As HPageBreak
Dim counter As Long

ActiveWindow.View = xlNormalView
Set sh = ActiveSheet
ActiveSheet.PageSetup.PrintArea = sh.UsedRange.Address
sh.ResetAllPageBreaks
ActiveWindow.View = xlPageBreakPreview
Set PBs = sh.HPageBreaks
counter = PBs.Count
counter = 0
For Each pb In PBs
counter = counter + 1
Next
ActiveWindow.View = xlNormalView
End Sub

вроде бы пока не глючит.

P.S. Проверяйте хоть код, перед тем как написать.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не могу получить коллекцию разрывов страниц
    #38020842
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tolikt,

Похоже проблема со скролом.
Самый простой вариант отключить на время скролл
Код: vbnet
1.
2.
3.
ActiveWindow.DisplayVerticalScrollBar = False
...
ActiveWindow.DisplayVerticalScrollBar = True
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не могу получить коллекцию разрывов страниц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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