Excelmacros – dynamic设置打印区域
我有一个固定列数的表,但行数不同。
有没有我可以创build一个macros来自动设置该表的打印区域?
我将结合使用VBA方法dynamicresize的命名范围。
首先创build一个命名范围,MyNamedRange :(假设你的表以$ A $ 1开始,你的表有标题)
=OFFSET(A1,0,0,COUNTA(A:A)-1,COUNTA(1:1))
然后只需执行一行VBA:
ActiveSheet.PageSetup.PrintArea = "MyNamedRange"
只需使用这个简单的代码:
Private Sub prnt() On Error Resume Next Cells(1, 1).Select With ActiveSheet.PageSetup .PrintArea = Range(ActiveCell, ActiveCell.SpecialCells(xlCellTypeLastCell)).Select.Address .Orientation = xlLandscape .LeftHeader = "&p/&N" .LeftFooter = ActiveWorkbook.FullName 'to show address .PrintTitleRows = "$1:$5" 'repeat at top .Zoom = False .Orientation = xlLandscape .FitToPagesWide = 1 'to print in 01 page .FitToPagesTall = False 'to print in 01 page End With End Sub
如果您想要始终打印整个工作表,则实际上只需清除打印区域,并且将默认填充数据的工作表的数量。 如果你不想隐藏一些列,wtfsven的答案是完美的。
我想这是一个非常迟的回应……上述解决scheme在Excel 2007中不适用于我,所以我使用了
begin_column = 1 end_column = 5 begin_row = 1 end_row = 30 'converting the numbers to uppercase letters temp_begin_column = Chr(first_column + 64) temp_end_column = Chr(second_column + 64) ActiveSheet.PageSetup.PrintArea = "$" & temp_begin_column & "$" & begin_row & ":$" & temp_end_column & "$" & end_row
这可能看起来像一个复杂的解决scheme,但它是唯一可靠地为我工作的东西
我已经试过这个,它为我工作。
StartColumn="A" StartRow=1 EndColumn="B" EndRow=10 ActiveSheet.PageSetup.PrintArea = StartColumn & StartRow & ":" & EndColumn & EndRow ActiveSheet.PageSetup.PrintArea = "A1:B10" Or ActiveSheet.PageSetup.PrintArea = "$" & StartColumn & "$" & StartRow & ":" & "$" & EndColumn & "$" & EndRow ActiveSheet.PageSetup.PrintArea = "$A$1:$B$10"