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