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