VBA Excel:根据行数和最后一行位置更改分页符
VBA Excel: change Page Break according to number of rows and last row position
我制作了一个包含几个 sheet 的工作簿。通过使用 VBA,我在 sheet1 上读取了不同数量的行,并将它们复制到最后一个 sheet,就像某种自定义报告一样。在大多数情况下,最后 sheet 在打印过程中只有一页很长,但有时 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:$E" ' takes in account Page1 and Page2
或
ActiveSheet.PageSetup.PrintArea = "$A:$E" 'only one page is for printing
谁有更好的解决办法!?谢谢。
我制作了一个包含几个 sheet 的工作簿。通过使用 VBA,我在 sheet1 上读取了不同数量的行,并将它们复制到最后一个 sheet,就像某种自定义报告一样。在大多数情况下,最后 sheet 在打印过程中只有一页很长,但有时 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:$E" ' takes in account Page1 and Page2
或
ActiveSheet.PageSetup.PrintArea = "$A:$E" 'only one page is for printing
谁有更好的解决办法!?谢谢。