2013-12-09 67 views
2

的第一行号码我想找出page1的第一行号码。Excel VBA:如何找到Page1

使用下面的代码可以找到1

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

页的最后一行数字,但我一定要找到第一页的第一行编号。

有没有人有想法呢?

非常感谢

+0

好了,第一行数通常为1 ;)但正如我猜你是指第一个非空行,我会建议循环遍历例如列A直到找到非空单元格。不会那么耗时(除非您的工作表从第1000行开始)。 – sina

+0

仅在我的手机上,'.Location.Address'显示范围? – PatricK

+0

嗨新浪,在我的Excel应用程序中,页面1的第一行数是不同的。有时候是1,但有时候是100。(第1〜99行被隐藏)如何判断?谢谢。 –

回答

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 

1日图片: 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得到

范围的地址采用半-colon (;)来分离非连续范围。如果我们想在上面的第一个解决方案中使用它,我们需要将它转换为逗号(,)

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 
+1

您的解决方案中有一个技巧。如果您的页面不是连续的范围,您将使用分号(;)分隔地址,这是分隔地址范围在“范围”中不可接受的。因此,您需要用逗号(,)替换它,就像我在答案中所做的那样。 –

+0

感谢您的信息!....................... –

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 
1

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

下面的代码将返回的地址的ActiveSheet

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

第一个可见行,或者如果你只是想行号

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