微信公众号 【EXCEL880】 QQ群【341401932】
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
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 '打印当前页到最后一页