今天,有人提出EXCEL的奇偶页打印问题,我想,如果数量少,就手工一下算了,如果数量多,得想办法: 一是粘贴到WORD中打印, 二是用宏,但红色的该句,几乎是有间歇式精神病,开始正常的,但修改过程中不行了,提示"下标越界", 最后只能新建一份EXCEL表,将代码复制过去,又行了,但过一会儿又不行了,这样搞了5\6次,总之,缺乏稳定性,就是这一点上,花了很多时间,当M>2时,比如=5, 当I=1时,该句正常.当I=2时,提示"下标越界", 实在是找不出原因. 另外,希望高手能优化,我无法做到用页控制,是先求出分页符所在的行,然后按1\3\5...2\4\6..的顺序打印.能否直接指定某一页,按页打印? 请高手指点,谢谢. Sub gg() Dim m As Byte, ir%, i As Byte, j As Byte Dim a() Worksheets("sheet1").Select Worksheets("sheet1").ResetAllPageBreaks '重新设置指定工作表上的所有分页符 Worksheets("Sheet1").DisplayPageBreaks = True 'sheet1 显示分页符 ir = Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeLastCell).Row '控制末页 m = Sheet1.HPageBreaks.Count '共有 m+1页,m个分页符,末页用ir控制, For i = 0 To m + 1 ReDim Preserve a(i) If i = 0 Then a(i) = 1 ElseIf i < m + 1 Then a(i) = Sheet1.HPageBreaks(i).Location.Row '第2页起每页第1行行号 Else a(i) = ir + 1 '因打印通式中均要减1,但末行不需要减1,故在末行+1调整。 End If Next j = InputBox("请输入列数") For i = 0 To m Step 2 '奇数页 Range(Cells(a(i), 1), Cells(a(i + 1) - 1, j)).Select Selection.PrintOut Copies:=1, Collate:=True Next MsgBox ("奇数页打印结束,请换纸张") For i = 1 To m Step 2 '偶数页 Range(Cells(a(i), 1), Cells(a(i + 1) - 1, j)).Select Selection.PrintOut Copies:=1, Collate:=True Next End Sub
LDdCeHHJ.rar
(9.29 KB, 下载次数: 77)
|