我有一个包含多个页面的工作表,每个页面都包含一个名称和一些其他信息,我正在使用此代码:
Dim Area as String
For i=1 to 10000
If worksheets(1).cells(i,4)=name then
Area=worksheets(1).cells(i,4).CurrentRegion.Address
End If
Next i
代码有效,但它只选择找到名称附近的区域,我希望它选择整个页面(工作表中有几个页面)而不是名称周围的小区域,是否有用CurrentRegion做到这一点的方法?或者是否有另一种我可以使用的财产呢?
我到处寻找一个类似问题的答案,但是没有运气,多亏了所有回复。
答案 0 :(得分:0)
将代码修改为
If worksheets(1).cells(i,4)=name then
Area = WorkSheets(1).Name & "!" & "A1:XFD1048576"
' You may modify this line to dynamically get max rows @ 65k for Excel 2003, etc.
End If
答案 1 :(得分:0)
您的评论告诉您,分页符将在答案中发挥作用。
下面的代码将显示页面的打印预览,在该页面上,名称解析范围。如果工作表有多个页面(由WS.HPageBreaks.Count
确定),则在HPageBreaks
行小于解析范围名称的行时循环遍历HPageBreak
。
Sub PrintSheetContainingTarget(Name As String)
'assumes sheet containing Name has no VPageBreaks
'(i.e. sheet is one printed page wide)
Dim WS As Worksheet
Dim Break As HPageBreak
Dim Page As Long
Page = 1 'initialise Page in case only one page on sheet
Set WS = Range(Name).Worksheet
If WS.HPageBreaks.Count > 0 Then
For Each Break In WS.HPageBreaks
If Break.Location.Row < Range(Name).Row Then
Page = Page + 1
End If
Next
End If
'display print preview of Page
WS.PrintOut Page, Page, 1, True
End Sub
Sub PrintWrapper()
Call PrintSheetContainingTarget("Target")
End Sub
我假设您要打印包含Name
的网页,但如果您想要执行其他操作,请使用代码替换WS.PrintOut Page, Page, 1, True
以实现您的目标。