Как исправить время выполнения 9 в подпрограмме - работает или не работает - PullRequest
0 голосов
/ 08 мая 2019

Мои автономные подпрограммы Workbook работают для многих вызовов, но не для них. Это самый простой пример для воспроизведения проблемы.

Ручная настройка разрывов страниц печати обеспечивает ожидаемые результаты. Эти сабвуферы работают на многих листах, выходят из строя на двух. Многие столбцы скрыты, что сохраняет распечатку в пределах ограничений принтера.

 this works

    BMPRangeSetup
    MyPageSetup
    DownPageBreaks
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True

this fails

    CMPRangeSetup
    MyPageSetup
    DownPageBreaks
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True

BMPRangeSetup contains:

    ActiveSheet.PageSetup.PrintArea = "$A$1:$BH$210"

Where CMPRangeSetup has:

    ActiveSheet.PageSetup.PrintArea = "$A$1:$BV$210"

the failure shows at Range("A111") 

    Sub DownPageBreaks()
      ActiveSheet.ResetAllPageBreaks
      ActiveSheet.HPageBreaks(1).Location = Range("A61")
      ActiveSheet.HPageBreaks(2).Location = Range("A111")
      ActiveSheet.HPageBreaks(3).Location = Range("A161")
    End Sub

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Спасибо, @AcsErno!Я считаю, что это работает!

 Range("A212").Activate     ' a cell outside print range.
 With ActiveSheet
     .ResetAllPageBreaks
     .HPageBreaks.Add Range("A61")
     .HPageBreaks.Add Range("A111")
     .HPageBreaks.Add Range("A161")
 End With
0 голосов
/ 08 мая 2019

@ BigBen прав, .HPageBreaks иногда дает сбой. Попробуйте это:

With ActiveSheet
     .ResetAllPageBreaks
     .HPageBreaks.Add Range("A61")
     .HPageBreaks.Add Range("A111")
     .HPageBreaks.Add Range("A161")
End With

Может также помочь переместить ActiveCell из затронутой области перед установкой разрывов страниц:

Dim sCell as String

sCell = ActiveCell.Address
Range("AA1111").Activate
....
Range(sCell).Activate
...