VBA Excel:根据行数和最后一行位置更改分页符



我做了一个由几张纸组成的工作簿。通过使用VBA,我读取工作表1上不同数量的行,并将它们复制到最后一页,就像某种自定义报告一样。在大多数情况下,这最后一张纸在打印过程中只有一页长,但有时 VBA 例行复制包含大量数据的行,排列成两行或更多行文本,因此此类报告的最后一行(其中应该是符号、日期、地点等(在第 2 页上显得出乎意料!如果我在只有第 1 页可打印的方式上进行了分页符,那么我的报告就会丢失这些详细信息;在第二种情况下,如果我将分页符设置为 2 页(页面上只有几行数据(,那么打印过程将产生 2 页的打印:一页填充数据,第二页为空!有没有办法检测最后一行的数据位置,然后根据检测结果从VBA更改打印区域,仅打印第1页或第1页和第2页!?我尝试使用行号,但有些行的高度是其他行的两倍,所以我放弃了!谢谢。

同时,我认为我找到了简单可行的解决方案(Excel 2010(:

LastRow3 = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
MsgBox "Last row filled with data is " & LastRow3" 
'detect how many pages is in this sheet
ActiveWorkbook.Sheets(1).Range("A1").Select
tnp= (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1)
pagnr = "Total number of pages is:" & tnp
MsgBox pagnr

之后,基于 tnp 变量值可能很容易设置分页符:

ActiveSheet.PageSetup.PrintArea = "$A$1:$E$80"  ' takes in account Page1 and Page2

ActiveSheet.PageSetup.PrintArea = "$A$1:$E$50" 'only one page is for printing

有人有更好的解决方案!?谢谢。

最新更新