С ActiveSheet.PageSetup.CenterHeader не работает правильно - PullRequest
0 голосов
/ 07 февраля 2019

Я записал макрос, чтобы установить настройки принтера.Я подсказываю пользователю, хотят ли они распечатать текущий отчет.В зависимости от того, какой отчет они запустили, я отправляю переменную Header в этот код установки принтера.

Если я «запускаю» это, заголовок отчета не изменяется от одного отчета к другому.Если я перейду этот код (f8) к точке на 2–3 строки после .CenterHeader = gblReportHeader и нажму клавишу f5, заголовок отчета изменится, как я и ожидаю.

Когда я закомментирую Application.PrintCommunication= строка (строки), оператор printpreview будет мигать старый заголовок отчета и затем отображать правильный отчет и заголовок.

Есть идеи, почему?

Sub PrintSettings(PrintZone)

' PrintSettings Macro               
Application.PrintCommunication = False
With ActiveSheet.PageSetup
    .PrintTitleRows = ""
    .PrintTitleColumns = ""
End With
Application.PrintCommunication = True

ActiveSheet.PageSetup.PrintArea = PrintZone

Application.PrintCommunication = False
With ActiveSheet.PageSetup
    .LeftHeader = ""
    .CenterHeader = gblReportHeader
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.7)
    .RightMargin = Application.InchesToPoints(0.7)
    .TopMargin = Application.InchesToPoints(0.75)
    .BottomMargin = Application.InchesToPoints(0.75)
    .HeaderMargin = Application.InchesToPoints(0.3)
    .FooterMargin = Application.InchesToPoints(0.3)
'        .PrintHeadings = False
'        .PrintGridlines = False
'        .PrintComments = xlPrintNoComments
'        .CenterHorizontally = False
'        .CenterVertically = False
    .Orientation = xlPortrait
'        .Draft = False
    .PaperSize = xlPaperLegal
'        .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = False
'        .Zoom = False
    .FitToPagesWide = 1
    .FitToPagesTall = False
    .PrintErrors = xlPrintErrorsDisplayed
'        .OddAndEvenPagesHeaderFooter = False
'        .DifferentFirstPageHeaderFooter = False
    .ScaleWithDocHeaderFooter = True
    .AlignMarginsHeaderFooter = True
End With
Application.PrintCommunication = True

'    Application.Dialogs(xlDialogPrinterSetup).Show
ActiveSheet.PrintPreview

End Sub

1 Ответ

0 голосов
/ 09 февраля 2019

Я решил мою проблему!

Я прокомментировал каждую строку в утверждении With ActiveSheet.PageSetup, которая, по моему мнению, мне не нужна.Это решило мою проблему.Затем я начал удалять закомментированные строки назад, пока не сузил проблему до 5 строк.

.LeftHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""

Я продолжил комментировать их по одному и обнаружил, что .RightHeader = "", который идет сразу после моего.CenterHeader = gblReportHeader является ошибочной строкой кода.

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

Спасибо тем, кто предложил свои предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...