Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не могу получить коллекцию разрывов страниц / 5 сообщений из 5, страница 1 из 1
19.02.2008, 10:46
    #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
19.02.2008, 17:42
    #35142285
AndreyArtemev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу получить коллекцию разрывов страниц
Вызыв sh.ResetAllPageBreaks - убил все разрывы страниц.

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

и все заработает
...
Рейтинг: 0 / 0
19.02.2008, 19:05
    #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
20.02.2008, 13:25
    #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
Период между сообщениями больше года.
31.10.2012, 22:57
    #38020842
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу получить коллекцию разрывов страниц
tolikt,

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


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