2013-12-09 114 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