Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel ActiveSheet.PageSetup.CenterHeader无法正常工作_Excel_Vba - Fatal编程技术网

Excel ActiveSheet.PageSetup.CenterHeader无法正常工作

Excel ActiveSheet.PageSetup.CenterHeader无法正常工作,excel,vba,Excel,Vba,我录制了一个宏来设置打印机设置。我会提示用户是否要打印当前报告。根据它们运行的报告,我将Header变量发送到此打印机设置代码 如果我“运行”这个,报告头不会从一个报告更改到下一个报告。 如果我单步执行此代码(f8),直到经过.CenterHeader=gblReportHeader的点2-3行,然后按f5键,则报告标题将按预期的方式更改 当我注释掉Application.PrintCommunication=行时,printpreview语句将刷新旧报告标题,然后显示正确的报告和标题 你知道为

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

如果我“运行”这个,报告头不会从一个报告更改到下一个报告。 如果我单步执行此代码(f8),直到经过.CenterHeader=gblReportHeader的点2-3行,然后按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

我已经解决了我的问题

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

.LeftHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
我继续一次注释一条,发现紧跟在.CenterHeader=gblReportHeader语句后面的.RightHeader=“”,是有问题的代码行

我不完全理解为什么,但是,由于这些行不是必需的,所以我毫不犹豫地消除它们,以便我的代码按预期工作


感谢那些提出建议的人。

我已经解决了我的问题

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

.LeftHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
我继续一次注释一条,发现紧跟在.CenterHeader=gblReportHeader语句后面的.RightHeader=“”,是有问题的代码行

我不完全理解为什么,但是,由于这些行不是必需的,所以我毫不犹豫地消除它们,以便我的代码按预期工作


感谢提供建议的人。

您是否尝试在PrintPreview语句之前添加
DoEvents
函数?是的,我在.CenterHeader=、End With之前、End With之后和ActiveSheet.PrintPreview之前进行了尝试。没有变化。我添加了一个fornext循环,其中包含doevents。所做的只是让程序慢下来。从我在doevents上读到的内容来看,这不是一种好的编码技术,它并不理想,但它可以帮助诊断问题。你能澄清你所说的“正确报告”和“正确报告”是什么意思吗?对我来说这两个听起来是一样的。忽略(正确的报告)。我想也许我是从那时候开始改句子的。我会改变我的评论,但似乎无法编辑我原来的帖子。也许您可以详细介绍DoEvents如何诊断此问题。是否尝试在PrintPreview语句之前添加
DoEvents
函数?是的,我在.CenterHeader=、End With之前、End With之后和ActiveSheet.PrintPreview之前进行了尝试。没有变化。我添加了一个fornext循环,其中包含doevents。所做的只是让程序慢下来。从我在doevents上读到的内容来看,这不是一种好的编码技术,它并不理想,但它可以帮助诊断问题。你能澄清你所说的“正确报告”和“正确报告”是什么意思吗?对我来说这两个听起来是一样的。忽略(正确的报告)。我想也许我是从那时候开始改句子的。我会改变我的评论,但似乎无法编辑我原来的帖子。也许你可以进一步阐述你的感受,看看DoEvents如何诊断这个问题。