Excel 代码会产生不同的结果,具体取决于我是单步执行代码还是让它直接运行 运行

Excel code produces different results depending on if I step through code or just let it run

我有一段代码循环遍历我工作簿中的所有工作表(第一张除外),并将它们打印成 PDF,使所有列和行都适合单个页面。如果我使用 F8 单步执行代码,这会起作用,但如果我只是让代码 运行 它就像它完全忽略了我的 With ActiveSheet.PageSetup 代码部分并且每个 PDF 输出有两页。

下面是我正在使用的代码(从这个问题的已接受答案中提取和调整:

Dim ctr
ctr = 2
Do While (ctr <= ActiveWorkbook.Sheets.Count)
    On Error Resume Next
    ActiveWorkbook.Sheets(ctr).Select
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0.25)
        .RightMargin = Application.InchesToPoints(0.25)
        .TopMargin = Application.InchesToPoints(0.25)
        .BottomMargin = Application.InchesToPoints(0.25)
        .HeaderMargin = Application.InchesToPoints(0.25)
        .FooterMargin = Application.InchesToPoints(0.25)
        .Orientation = xlPortrait
        .PaperSize = xlPaperLetter
        .Zoom = 100
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Application.PrintCommunication = False
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=ActiveWorkbook.Path & "\" & ActiveWorkbook.ActiveSheet.Name & ".pdf", _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=True
    ctr = ctr + 1
Loop

我希望无论是 运行 使用 F5 编辑代码还是使用 F8 单步执行代码,它的行为方式都是一样的,但这里似乎不是这种情况,我可以'弄清楚为什么。

更新:Rory 在下面回答了问题,第二个 "Application.PrintCommunication = False" 应该是 "Application.PrintCommunication = True"。

将第二个Application.PrintCommunication = False改为Application.PrintCommunication = True