使用CurrentRegion选择整个页面

时间:2014-07-03 10:46:54

标签: excel vba excel-vba

我有一个包含多个页面的工作表,每个页面都包含一个名称和一些其他信息,我正在使用此代码:

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做到这一点的方法?或者是否有另一种我可以使用的财产呢?

我到处寻找一个类似问题的答案,但是没有运气,多亏了所有回复。

2 个答案:

答案 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以实现您的目标。