实例需求:应用开发过程中,需要校验选中区域,要求选中区域不能跨页,即选中区域分布在两个不同的页面中。
示例代码如下。
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行代码与上面类似,不再赘述。