我想找出page1的第一行编号。
使用以下代码可以找到第1页的最后一行。
ThisWorkbook.Worksheets("Sheet1").HPageBreaks(1).Location.Row - 1
但我必须找到Page1的第一行编号。
有人会对此有所了解吗?
非常感谢
答案 0 :(得分:1)
您可以尝试使用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
第一张图片:
第二张图片:
每次高于第一行编号是第一页上的第一行编号。要获得它,您可以尝试使用以下解决方案之一:
firstRow = Range(Replace(ThisWorkbook.Worksheets("Sheet1").PageSetup.PrintArea, ";", ",")).Row
或使用以下解决方案:
firstRow = Split(Split(ThisWorkbook.Worksheets("Sheet1").PageSetup.PrintArea, ":")(0),"$")(2)
补充说明
您从.PrintArea property
获得的范围地址使用分号(;)
来分隔非连续范围。如果我们想在上面的第一个解决方案中使用它,我们需要将其转换为逗号(,)
。
答案 1 :(得分:1)
您可以使用SpecialCells获取第一个可见行。
以下代码将返回ActiveSheet的第一个可见行的地址
msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Address
或者如果您只想要行号
msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Row
答案 2 :(得分:0)
这将为您提供第一页的第一行:
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
答案 3 :(得分:0)
以下不是我必须承认的最好的编码方式。但我认为,这很容易阅读,它完成了工作(如果我理解问题是正确的。)
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