微信公众号 【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 '打印当前页到最后一页