.PageSetup.PrintArea只适用于Activesheet吗?

时间:2017-01-04 14:36:30

标签: excel vba excel-vba

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

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

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吗?如果我不必,我不必激活每张纸。

2 个答案:

答案 0 :(得分:1)

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

var publicHolidays = DateSystem.GetPublicHoliday(CountryCode.GB, 2017);
foreach (var publicHoliday in publicHolidays)
{
    var name = publicHoliday.LocalName;
}

答案 1 :(得分:1)

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

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