与ActiveSheet.PageSetup.CenterHeader不能正常工作

时间:2019-02-07 19:55:55

标签: excel vba

我录制了一个宏来设置打印机设置。我提示用户是否要打印当前报告。根据他们运行的报告,我将Header变量发送到该打印机设置代码。

如果我“运行”此命令,则报告标题不会从一个报告更改为下一个报告。 如果我单步执行此代码(f8)到.CenterHeader = gblReportHeader经过2 -3行的点,然后按f5,则报告标题会按我的期望进行更改。

当我注释掉Application.PrintCommunication = line(s)时,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 :(得分:0)

我已经解决了我的问题!

我注释了我认为不需要的With ActiveSheet.PageSetup语句中的每一行。这解决了我的问题。然后,我开始删除注释行,直到将问题范围缩小到5行。

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

我继续一次注释掉这些内容,发现.CenterHeader = gblReportHeader语句之后的.RightHeader =“”是令人反感的代码行。

我不完全理解为什么,但是由于这些行不是必需的,因此我没有消除它们的余地,因此我的代码可以按预期工作。

谢谢那些提供建议的人。