的第一行号码我想找出page1的第一行号码。Excel VBA:如何找到Page1
使用下面的代码可以找到1
ThisWorkbook.Worksheets("Sheet1").HPageBreaks(1).Location.Row - 1
页的最后一行数字,但我一定要找到第一页的第一行编号。
有没有人有想法呢?
非常感谢
的第一行号码我想找出page1的第一行号码。Excel VBA:如何找到Page1
使用下面的代码可以找到1
ThisWorkbook.Worksheets("Sheet1").HPageBreaks(1).Location.Row - 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日图片:
第二个画面:
上面的第一个行号每次都是第一个行号在第一页上。为了得到它,你可以尝试用以下方法解决:
firstRow = Range(Replace(ThisWorkbook.Worksheets("Sheet1").PageSetup.PrintArea, ";", ",")).Row
或以下解决方案:
firstRow = Split(Split(ThisWorkbook.Worksheets("Sheet1").PageSetup.PrintArea, ":")(0),"$")(2)
附加说明
你从.PrintArea property
得到
范围的地址采用半-colon (;)
来分离非连续范围。如果我们想在上面的第一个解决方案中使用它,我们需要将它转换为逗号(,)
。
这将让你在第一页的第一行:
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
您可以使用SpecialCells获取第一个可见行。
下面的代码将返回的地址的ActiveSheet
msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Address
第一个可见行,或者如果你只是想行号
msgbox ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Rows(1).Row
好了,第一行数通常为1 ;)但正如我猜你是指第一个非空行,我会建议循环遍历例如列A直到找到非空单元格。不会那么耗时(除非您的工作表从第1000行开始)。 – sina
仅在我的手机上,'.Location.Address'显示范围? – PatricK
嗨新浪,在我的Excel应用程序中,页面1的第一行数是不同的。有时候是1,但有时候是100。(第1〜99行被隐藏)如何判断?谢谢。 –