powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBE - неправильно работает HPageBreaks
12 сообщений из 12, страница 1 из 1
VBE - неправильно работает HPageBreaks
    #35562135
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю с VB Excel2000. Текст макроса (ниже) был записан на активном листе через "Запись макроса" при ручной разметке. Разделители передвигаются мышой в нужное положение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    ActiveWindow.View = xlPageBreakPreview
    ActiveWindow.SmallScroll Down:= 36 
    Set ActiveSheet.HPageBreaks( 1 ).Location = Range("A51")
    ActiveWindow.SmallScroll Down:= 60 
    Set ActiveSheet.HPageBreaks( 2 ).Location = Range("A105")
    ActiveWindow.SmallScroll Down:= 48 
    Set ActiveSheet.HPageBreaks( 3 ).Location = Range("A159")
    ActiveWindow.SmallScroll Down:= 54 
    Set ActiveSheet.HPageBreaks( 4 ).Location = Range("A202")
    ActiveWindow.SmallScroll Down:= 42 
    Set ActiveSheet.HPageBreaks( 5 ).Location = Range("A265")
    ActiveWindow.SmallScroll Down:= 60 
    Set ActiveSheet.HPageBreaks( 6 ).Location = Range("A313")
    ActiveWindow.SmallScroll Down:= 57 
    Set ActiveSheet.HPageBreaks( 7 ).Location = Range("A366")
    ActiveWindow.SmallScroll Down:= 51 
    Set ActiveSheet.HPageBreaks( 8 ).Location = Range("A415")
    ActiveWindow.SmallScroll Down:= 48 
    Set ActiveSheet.HPageBreaks( 9 ).Location = Range("A469")
    ActiveWindow.SmallScroll Down:= 54 
    Set ActiveSheet.HPageBreaks( 10 ).Location = Range("A523")
    ActiveWindow.SmallScroll Down:= 36 
    ActiveSheet.PageSetup.PrintArea = "$A$1:$I$564"
При запуске макроса с исходного листа в VB вылетает ошибка: картина такая, что при каждом HPageBreaks(...).Location изменяется (увеличивается) ширина всех столбцов на листе, и к третьему-четвертому брейку исполнение прерывается по ошибке "Subscript of a range".

Ублюдочное решение найдено - после каждого брейка вызывать макрос, который восстанавливает ширину столбцов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Ширина()
    Range("A:A").ColumnWidth =  4 
    Range("B:B").ColumnWidth =  3 . 71 
    Range("C:C").ColumnWidth =  26 . 29 
    Range("D:D").ColumnWidth =  26 
    Range("E:E").ColumnWidth =  7 . 14 
    Range("F:F").ColumnWidth =  12 . 71 
    Range("G:G").ColumnWidth =  8 . 29 
    Range("H:H").ColumnWidth =  5 
    Range("I:I").ColumnWidth =  5 
End Sub
Т.е.:
Код: plaintext
1.
2.
3.
4.
    Set ActiveSheet.HPageBreaks( 1 ).Location = Range("A51")
    Call Ширина
    ActiveWindow.SmallScroll Down:= 60 
    Set ActiveSheet.HPageBreaks( 2 ).Location = Range("A105")
    Call Ширина
... и т.д.
Но самое печальное, что полный вариант макроса, передвигающего разделители на листе, прекрасно работал - именно с этим же HPageBreaks... А потом бобик помер!
Никаких других тараканов в VB не замечено.
Что случилось с VBE, как бороться? посоветуйте, пожалуйста...

Для полной ясности приведу фрагмент полного макроса, где в цикле идет разметка.
Код: 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.
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.ResetAllPageBreaks
    Dcn = ActiveSheet.HPageBreaks.Count
    For iDcn =  1  To Dcn +  1 
       Dd1 = ActiveSheet.HPageBreaks(iDcn).Location
       If Dd1 <> Empty Then
       Cells.Find(What:=Dd1, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
           xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
           False).Select
       Dr = ActiveCell.Row
       Do
         Cells(Dr,  1 ).Select
         Dd1 = ActiveCell.Value
         If Dd1 <> Empty Then
            Dr = Dr -  1 
         End If
       Loop While Dd1 <> Empty
       Set ActiveSheet.HPageBreaks(iDcn).Location = Range(Cells(Dr,  1 ), Cells(Dr,  1 ))
       End If
    Next
    Cells(AcRc,  1 ).Select
    Do
      Dd1 = ActiveCell.Value
      If Dd1 <> Empty Then
         AcRc = AcRc -  1 
         Cells(AcRc,  1 ).Select
      End If
    Loop While Dd1 <> Empty
Приаттачена иллюстрация: исполнение прервано на четвертом шаге цикла. Разметка нарушена очевидно.
С уважением...
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35562148
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, приаттачить картинку не получается... :((
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35562235
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь разобраться.
На размеченном листе 8 страниц.
Однако -
Код: plaintext
1.
2.
3.
4.
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.ResetAllPageBreaks
    Dcn = ActiveSheet.HPageBreaks.Count
    For iDcn =  1  To Dcn +  1 
    .........................
Здесь DCN, - число мягких разделителей, равно 16 !!!

Люди, что с моим VB?!
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35562624
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RobertinoРаботаю с VB Excel2000. Текст макроса (ниже) был записан на активном листе через "Запись макроса" при ручной разметке. Разделители передвигаются мышой в нужное положение.

У "нужного положения" есть критерий?
В приведенном тобой коде похоже это пустая ячейка в первом столбце. Так?
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35562648
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor RobertinoРаботаю с VB Excel2000. Текст макроса (ниже) был записан на активном листе через "Запись макроса" при ручной разметке. Разделители передвигаются мышой в нужное положение.

У "нужного положения" есть критерий?
В приведенном тобой коде похоже это пустая ячейка в первом столбце. Так?Совершенно точно. Лист заполнен несколькими списками - для каждого во втором стобце стоит заголовок. В первом столбце - номера позиций. На строке с заголовком - номера нет. Потому, определив положение (строку) очередного разделителя, поднимаю его до ближайшей пустой ячейки в первом столбце.
Списки при печати, само собой, идут без разрывов.
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35579652
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Robertino vkodor RobertinoРаботаю с VB Excel2000. Текст макроса (ниже) был записан на активном листе через "Запись макроса" при ручной разметке. Разделители передвигаются мышой в нужное положение.

У "нужного положения" есть критерий?
В приведенном тобой коде похоже это пустая ячейка в первом столбце. Так?Совершенно точно. Лист заполнен несколькими списками - для каждого во втором стобце стоит заголовок. В первом столбце - номера позиций. На строке с заголовком - номера нет. Потому, определив положение (строку) очередного разделителя, поднимаю его до ближайшей пустой ячейки в первом столбце.
Списки при печати, само собой, идут без разрывов.Господа, осмелюсь вновь обратить ваше внимание на свой вопрос.
Уважаемый vkodor , имхо, имел какую-то идею, но не стал ее развивать... Между тем, проблема до сих пор для меня актуальна...
Все подробности - в треде.
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35581476
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если книжку с данными приложить?
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35582208
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owlа если книжку с данными приложить?Сначала не врубился... Потом дошло. Ты имеешь сказать, что в самой книге нарушена структура?
Хорошая мысль. Проверю в ближайший час. Недаром при 8 страницах в разметке мягких разделителей аж 16...
Спасибо, уважаемый Белый Сов...
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35583010
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, ничего пока хорошего...

Сделал НОВУЮ книгу. Именно, не Copy As, a новую. Подогнал все один в один, как на старой, - считаю, все, что с нарушениями структуры - за борт.
Кое-что изменилось. Раньше счет разделителей по команде
Код: plaintext
Dcn = ActiveSheet.HPageBreaks.Count
возвращал 16 при 8 страницах, теперь возвращает 9!
И все...
Обнаружилась совсем интересная фича - уже в новой книге.
Может ли следующий оператор менять что-либо на рабочем листе при выполнении?
Код: plaintext
1.
2.
    For iDcn =  1  To Dcn +  1 
       Dd1 = ActiveSheet.HPageBreaks(iDcn).Location
    Next
Не может.
А он меняет... Положение первого мягкого разделителя ДО него - 64 строка, после - 79 строка!!! Бред, конечно... Но факт.
Мне очень обидно, но саму книжку приаттачить не могу... Потому поверьте на слово!

И больше ничего не изменилось. Как и раньше, в старой книге, каждое выполнение в цикле
Код: plaintext
Set ActiveSheet.HPageBreaks(iDcn).Location = Range(Cells(Dr,  1 ), Cells(Dr,  1 ))
увеличивает ширину столбцов...
Короче, полная ж..а, извините пожалуйста!
...
Рейтинг: 0 / 0
VBE - неправильно работает HPageBreaks
    #35583970
Robertino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, случайно обнаружилась на соседней машине копия рабочей книги... Той самой, на которой у меня субж...

Как вам анекдот - в книге два одинаковых листа - одной структуры, даже данные одинаковые.
На одном листе - прекрасно работает передвижка разделителей! На другом листе - все прелести эхотага :((
Короче, говорить не о чем, кажется... Разбираться в том, на каком уровне в рабочей книге лежит дерьмо, - конечно, надо...
Но поступил я оч.просто. Сделал копию с "правильного листа" в этой же книге... "Неправильный лист" удалил. Копию листа переименовал. Проверил на двух одинаковых листах, как по кнопке работает макрос, - сбоев не наблюдалось, процесс проходит до логического финиша :))

В общем, если у кого будут интересные мысли по теме, - очень рад буду пообщаться.

Спасибо всем, и извините, если в чем не прав...

**************************************************
ЗЫ. Только что проверил от начала до конца - на обоих рабочих листах все проходит без сбоев!!!...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
VBE - неправильно работает HPageBreaks
    #38462965
averinsergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Robertino,

тема старая, но тоже наткнулся на эту проблему. Вот что пишет официальный микрософт по этому поводу, сам пока не проверял.
http://support.microsoft.com/kb/210663
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
VBE - неправильно работает HPageBreaks
    #40122034
Андрей211221
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Robertino,

Наткнулся на ваш пост, решая сходную проблему. Ее удалось решить, *решил отписаться и вам.

В моем случае решением оказалось перевести проблемный лист в "Вид/Страничный режим" и "Разметка страницы/Задание области печати". По отдельности эти пункты почему-то у меня не срабатывали.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBE - неправильно работает HPageBreaks
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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