如何快速判断Excel中选区跨页?

实例需求:应用开发过程中,需要校验选中区域,要求选中区域不能跨页,即选中区域分布在两个不同的页面中。

示例代码如下。

Sub Demo()
    Dim rSelect As Range, oHP As HPageBreak
    Dim UpCell As Range, DownCell As Range
    Set rSelect = Selection.EntireRow 
    ActiveWindow.View = xlPageBreakPreview
    For Each oHP In ActiveSheet.HPageBreaks
        Set DownCell = oHP.Location
        Set UpCell = DownCell.Offset(-1, 0)
        If Not ((Intersect(DownCell, rSelect) Is Nothing) Or (Intersect(UpCell, rSelect) Is Nothing)) Then
            MsgBox "选区跨页"
            ActiveWindow.View = xlNormalView
            Exit Sub
        End If
    Next
    MsgBox "选区合规"
    ActiveWindow.View = xlNormalView
End Sub

【代码解析】
第4行代码读取选中单元格所在的整行区域。
第6~14行代码循环遍历活动工作表中的水平分页符。
第7行代码获取水平分页符的位置,即分页符之下的单元格。
第8行代码获取分页符之上的单元格。
第9行代码判断是否跨页,其中的判断条件为Not (a or b),其展开形式为Not a And Not b),即DownCell和UpCell都在rSelect之内。
第10行代码显示提示信息。
第11行代码退出分页预览模式。
第12行代码结束代码过程执行。
第15~16行代码与上面类似,不再赘述。

你可能感兴趣的:(VBA,Excel,表格,跨页,选区跨页,分页符,工作表跨页,水平分页)