Excel VBA如何打印当前页以及从当前页打印到结束 wps VBA打印 图文

2021年2月20日16:31:17 评论 349 views
微信公众号 【EXCEL880】 QQ群【165159540】 Excel课程咨询 请加郑广学老师微信EXCEL880B

VBA里不能直接获得当前页 可以通过分页符位置和当前活动单元格位置判断当前页 这样就可以打印了 然后获得总页数 再打印到总页数即可

Sub 打印当前页_微信EXCEL880B()
'如果当前表是空表则退出程序
'微信EXCEL880B 教程咨询 付费定制
If IsEmpty(ActiveSheet.UsedRange) Then MsgBox "当前工作表为空!", 64, "出错": Exit Sub
If Intersect(ActiveSheet.UsedRange, ActiveCell) Is Nothing Then MsgBox "请选择已用区域!", 64, "出错": Exit Sub
Dim 水平分页符 As Integer, 垂直分页符 As Integer, Hrow As Integer
Dim 当前页 As Integer, m As Integer, n As Integer, Vcolumn
水平分页符 = ActiveSheet.HPageBreaks.Count '记录水平分页符数量
垂直分页符 = ActiveSheet.VPageBreaks.Count '记录垂直分页符数量
'获取纵当前页的分页符行号
For n = 1 To 水平分页符 '横向循环
Hrow = ActiveSheet.HPageBreaks(n).Location.Row '返回分页符位置的单元格行号
If Hrow > ActiveCell.Row Then Exit For '如果大于当前行号则退出循环
Next
'获取当前页的横向位置
For m = 1 To 垂直分页符 '纵向循环
Vcolumn = ActiveSheet.VPageBreaks(m).Location.Column '返回分页符位置的单元格列号
If Vcolumn > ActiveCell.Column Then Exit For '如果大于当前列号则退出循环
Next
'获取当前页的纵向位置
If ActiveSheet.PageSetup.Order = xlOverThenDown Then
当前页 = (n - 1) * (垂直分页符 + 1) + m '记录当前页的页数
Else
当前页 = (m - 1) * (水平分页符 + 1) + n '记录当前页的页数
End If
If MsgBox("当前单元格在本工作表中处于" & Chr(10) & "第" & 当前页 & "页" & Chr(10) & "是否打印当前页?", 65, "友情提示") = vbOK Then
ActiveSheet.PrintOut From:=当前页, To:=当前页 '打印当前页
End If
End Sub

打印到最后一页 只需要改倒数第3行的位置

ActiveSheet.PrintOut From:=当前页, To:=Activesheet.PageSetup.Pages.Count  '打印当前页到最后一页

发表评论

您必须才能发表评论!