如题所述
提供一个给您参考,希望对你有帮助:
Sub test()
Dim i%, n%
On Error Resume Next
For i = 1 To Sheets.Count '遍历工作簿中的工作表
With Sheets(i)
If Application.CountA(.UsedRange.Cells) Then '若工作表非空白则执行
.PageSetup.PrintArea = .UsedRange.Address '设置打印范围为已使用的区域
.PrintOut from:=1, To:=1, Collate:=True, Copies:=1, IgnorePrintAreas:=False '打印第一页,份数为1份
n = .PageSetup.Pages.Count '获取页码数
If n > 1 Then '若页码数大于1页,则执行打印最后一页,份数为1份
.PrintOut from:=n, To:=n, Collate:=True, Copies:=1, IgnorePrintAreas:=False
End If
End If
End With
Next i
End Sub追问
Sub test()
Dim i%, n%
On Error Resume Next
For i = 1 To Sheets.Count '遍历工作簿中的工作表
With Sheets(i)
If Application.CountA(.UsedRange.Cells) Then '若工作表非空白则执行
.PageSetup.PrintArea = .UsedRange.Address '设置打印范围为已使用的区域
.PrintOut from:=1, To:=1, Collate:=True, Copies:=1, IgnorePrintAreas:=False '打印第一页,份数为1份
n = .PageSetup.Pages.Count '获取页码数
If n > 1 Then '若页码数大于1页,则执行打印最后一页,份数为1份
.PrintOut from:=n, To:=n, Collate:=True, Copies:=1, IgnorePrintAreas:=False
End If
End If
End With
Next i
End Sub追问
我已经设置了打印范围,但最后一页明明有内容,打出来却是空白页
追答我这个打印范围是已经使用的区域,已经使用的意思不光是单元格里有数字,也有可能是设置过单元格格式或者是合并过单元格等。所有空白页的原因是,这一页下方或右侧的空白行或列里设置了单元格格式等。只需要把表格下方空白行和右侧空白列按整行或者整列删除一下即可。
温馨提示:答案为网友推荐,仅供参考