VBA Excel:根据行数和最后一行位置

时间:2016-01-30 12:01:21

标签: excel vba break

我制作了一张由几张纸组成的工作簿。通过使用VBA,我在sheet1上读取不同数量的行,并将它们复制到最后一个表单,就像某种自定义报表一样。在大多数情况下,这张最后一张纸在打印过程中只有一页长,但有时候VBA例行复制有大量数据的行,排列成两行或多行文本,因此这些报告的最后一行(其中应为标志,日期,地点等) 。)第2页出现意外!如果我在只打印第1页的路上打破了Page,那么我的报告就丢失了这些细节;在第二种情况下,如果我将Page break设置为2页(并且页面上只有几行数据),那么打印过程将产生2页打印:一页填充数据,第二页空! 有没有办法用数据检测最后一行的位置,然后根据检测结果从VBA更改打印区域,一起打印第1页或第1页和第2页!我尝试使用行号,但有些行的高度是其他行的两倍,所以我放弃了! 谢谢。

1 个答案:

答案 0 :(得分:0)

与此同时,我认为我找到了简单易用的解决方案(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

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