Excel VBA:如何findPage1的第一行号码

我想找出page1的第一行号。

使用下面的代码可以find页面1的最后一个行号。

ThisWorkbook.Worksheets("Sheet1").HPageBreaks(1).Location.Row - 1 

但是我必须findPage1的第一行。

有人会有想法吗?

非常感谢

您可以使用SpecialCells获取第一个可见的行。

下面的代码将返回ActiveSheet的第一个可见行的地址

 msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Address 

或者如果你只是想要的行号

 msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Row 

你可以试试Sheets().PageSetup.PrintArea属性。 这将返回所有页面的范围地址。 结果你得到这样的东西:

 $G$12:$P$31 << for continuous range/pages >> see 1st screen shot below $G$12:$P$31;$B$5:$E$20;$R$5:$U$20 << for non-continuous ranges/pages >> see 2nd screen shot below 

第一张照片: 在这里输入图像描述

第二张照片: 在这里输入图像说明

第一行数字上方的每一行是第一页上的第一行数字。 为了得到它,你可以尝试以下解决scheme之一:

 firstRow = Range(Replace(ThisWorkbook.Worksheets("Sheet1").PageSetup.PrintArea, ";", ",")).Row 

或者使用以下解决scheme:

 firstRow = Split(Split(ThisWorkbook.Worksheets("Sheet1").PageSetup.PrintArea, ":")(0),"$")(2) 

附加说明

您从.PrintArea property获取的范围地址使用分号(;)分隔非连续范围。 如果我们想在上面的第一个解决scheme中使用它,我们需要将它转换为逗号(,)

这会让你成为第一页的第一行:

 Sub dural() Dim nRow As Long, s As String Dim r As Range s = Sheets("Sheet1").PageSetup.PrintArea Set r = Range(s) nRow = r(1).Row MsgBox nRow End Sub 

以下是我不得不承认的最好的编码方式。 但是我认为,阅读起来很容易,而且能够完成这项工作(如果我理解这个问题是正确的)。

 Sub runningThroughSheets() Dim wsht As Worksheet Dim wholeRow As Range Dim counter As Integer Dim stopSearch As Boolean Set wsht = Application.ActiveWorkbook.Worksheets("Sheet1") counter = 0 stopSearch = False Do While stopSearch = False If Range("A1").Offset(counter, 0).EntireRow.Hidden = False Then stopSearch = True End If counter = counter + 1 Loop MsgBox counter End Sub