设置打印区域在Excel 2013中使用macros

在Excel 2013中,具有名为“标签”的工作表 ,我试图从A2 设置打印区域直到页面结束,以列L结束。

 Worksheets("Tags").PageSetup.PrintArea = Worksheets("Tags").Range( _ Cells(2, 1), Cells(Worksheets("Tags").Range("A65536").End(xlUp).Row, 12)) 

我的代码编译好,但它似乎不工作 – 没有设置打印区域。

设置打印区域应该是一个正确的macros?

如果你声明了一些variables并分解你的语句,那么看看会发生什么更容易。

尝试这个:

 Sub SetPrintArea() Dim ws As Worksheet Dim lastRow As Long Set ws = ThisWorkbook.Sheets("Tags") ' find the last row with formatting, to be included in print range lastRow = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row ws.PageSetup.PrintArea = ws.Range("A2:L" & lastRow).Address End Sub 

或者,如果你想find带有数据的lastRow,你可以find像这样的lastrow:

 lastRow = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

请注意,从Excel 2007开始,用于查找最后一行的起始点的65536值已过时(尽pipe它经常可以正常工作),Excel 2007每张工作表有超过一百万行。

有几件事要注意你的方法:

  1. Cells(2,1)是A2。 语法是Cells([row], [column])
  2. 您想要列L中最后一个已填充的行,但正在A列中查找。 Range("A65536").End(xlUp).Row

这导致A1:L2的打印区域(一旦你添加了.Address到你的范围)。 为什么A1? 因为A列是空的,所以lastrow因此是第1行。您已经将范围设置为A2:L1,它成为A1:L2。

您需要在代码的末尾添加.Address

  Worksheets("Tags").PageSetup.PrintArea = Worksheets("Tags").Range( _ Cells(2, 1), Cells(Worksheets("Tags").Range("A65536").End(xlUp).Row, 12)).Address 

PageSetup.PrintArea属性

返回或设置要打印的范围,作为使用macros语言中的A1样式引用的string。 读/写string。