2011-03-16 90 views

回答

2

我会结合一个动态调整大小命名范围与VBA方法。

首先创建一个名为范围,MyNamedRange:(假设你的表起始于$ A $ 1和表有头)

=OFFSET(A1,0,0,COUNTA(A:A)-1,COUNTA(1:1)) 

然后,只需执行一行VBA的:

ActiveSheet.PageSetup.PrintArea = "MyNamedRange" 
0

如果您想要始终打印整个工作表,您实际上只需清除打印区域即可,它将默认为填充数据的工作表的数量。如果你不想隐藏一些列,wtfsven的答案是完美的。

1

只要使用这个简单的代码:

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 
0

我想这是一个很迟了回应... 上述解决方案并没有为我在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 

这可能看起来像一个复杂的解决方案,但它唯一可靠地为我工作

0

我试过这个d它为我工作。

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"