设置打印区域在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每张工作表有超过一百万行。
有几件事要注意你的方法:
-
Cells(2,1)
是A2。 语法是Cells([row], [column])
- 您想要列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。