Excel VBA:如何查找Page1的第一行编号

时间:2013-12-09 12:49:43

标签: excel vba

我想找出page1的第一行编号。

使用以下代码可以找到第1页的最后一行。

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

但我必须找到Page1的第一行编号。

有人会对此有所了解吗?

非常感谢

4 个答案:

答案 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

第一张图片: enter image description here

第二张图片: enter image description here

每次高于第一行编号是第一页上的第一行编号。要获得它,您可以尝试使用以下解决方案之一:

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