.PageSetup.PrintArea只能在Activesheet上工作吗?

我有一个循环遍历工作簿中的所有工作表…然后将打印区域设置为所选button。 一个button将它设置为开始于Col A,另一个Col C …等。

但是,我得到一个运行时错误1004,说我input了一个公式错误。 使用即时窗口,我可以testing我的打印区域是我想要的。

With sheet If .Name <> "Index" Then Set rEnd = .Columns("A").Find("END", .[A8], xlValues, xlWhole, xlByRows, xlNext) If rEnd Is Nothing Then 'Not Found - leave as is Else 'Found .PageSetup.PrintArea = "$" & sCol & "&8:$R$" & rEnd.Row '<---Fails here SetZoom sheet, "Report Print """ & sCol & """ Scale" End If End If End With 

我在网上看到的每个例子都显示了使用ActiveSheet。 .PageSetup.PrintArea是否需要ActiveSheet? 我宁愿不必激活每张纸,如果我不必。

这给了我一个有效的PrintArea。 添加了周围的引号,并删除了额外的&符号。

 .PageSetup.PrintArea = "" & "$" & sCol & "8:$R$" & rEnd.Row & "" 

实际上设置打印区域与添加名为Print_Area的图纸级定义名称相同,因此您可以使用此名称而不是.PageSetup.Printarea行:

  .Range("$" & sCol & "$8:$R$" & rEnd.Row).Name = "'" & .Name & "'!Print_Area"