当前位置: 首页 > news >正文

判断用户选择的Excel单元格区域是否跨页?

VBA应用程序开发过程中,经常需要处理用户选中的单元格区域,有的应用场景中,需要限制用户选中区域位于同一页中(以打印预览显示的分页划分),但是VBA对象模型中并没有提供相应的接口,用于快速查询单元格位于哪个打印页面中,那么只能自己动手丰衣足食了。

示例代码如下。

Function IsOnMultiPg(ByRef rRng As Range)Dim rData As Range, HPB As HPageBreakDim beforeC As Range, afterC As RangeIsOnMultiPg = FalseIf rRng.Cells.Count = 1 Then Exit FunctionSet rData = rRng.EntireRowFor Each HPB In ActiveSheet.HPageBreaksSet afterC = HPB.LocationSet beforeC = afterC.Offset(-1, 0)If Not ((Intersect(afterC, rData) Is Nothing) Or (Intersect(beforeC, rData) Is Nothing)) ThenIsOnMultiPg = TrueExit ForEnd IfNext
End Function

【代码解析】
第4行代码设置函数默认返回值为False,即没有跨页。
第5行代码判断参数rRng包含的单元格个数,如果是单个单元格,那么退出函数,函数返回值为False。
第6行代码获取指定单元格区域所在的行区域。
注意:为了简化示例代码,本过程仅仅检测单元格区域是否跨越行分页符,使用类似的方法,可以实现检测单元格区域是否跨越列分页符。
第7~14行代码循环遍历行分页符。
第8行代码获取行分页符之下的单元格,例如我的电脑打开示例文件,其第一个分页符位于54行和55行之间(各位读者系统默认打印机的设置将影响分页符的位置,可能与我的并不相同),那么HPB.Location返回值为A55。
第9行代码获取行分页符之上的单元格。
第10行代码判断afterC和beforeC是否和rData单元格区域都有交集。
如果满足上述条件,第11行代码设置返回值为True。
第12行代码退出循环过程。

测试代码如下。

Sub Demo()Dim r As RangeFor Each r In Range("A50:D54,A50:D66").AreasIf IsOnMultiPg(r) ThenDebug.Print r.Address(0, 0) & ": 跨页"ElseDebug.Print r.Address(0, 0) & ": 没有跨页"End IfNext
End Sub

【立即窗口】中输出结果如下:

A50:D54: 没有跨页
A50:D66: 跨页
http://www.xdnf.cn/news/216469.html

相关文章:

  • 力扣hot100——239.滑动窗口最大值
  • 在大数据环境下,使用spingboot为Android APP推送数据方案
  • 【Machine Learning Q and AI 读书笔记】- 02 自监督学习
  • 主流微前端框架比较
  • java面试题目
  • Nacos源码—2.Nacos服务注册发现分析四
  • 三种机器学习类型
  • Glide 如何加载远程 Base64 图片
  • MobileNetV2: 反向残差和线性瓶颈
  • 应急演练考试排查-DC01
  • 【动态导通电阻】GaN功率器件中动态导通电阻退化的机制、表征及建模方法
  • AI 的未来是开源?DeepSeek 正在书写新篇章!
  • 算法基础学习|02归并排序——分治
  • 封装js方法 构建树结构和扁平化树结构
  • 20_大模型微调和训练之-基于LLamaFactory+LoRA微调LLama3后格式合并
  • 水力压裂多裂缝扩展诱发光纤应变演化试验研究
  • 基于Mamba2的文本生成实战
  • 什么是 MCP?AI 应用的“USB-C”标准接口详解
  • AI赋能的问答系统:2025年API接口实战技巧
  • Vulkan与OpenGL的对比
  • 服务器主动发送响应?聊天模块如何实现?
  • 【Vue3/Typescript】合并多个pdf并预览打印,兼容低版本浏览器
  • CentOS NFS共享目录
  • 【GESP】C++三级练习 luogu-B2118 验证子串
  • 后验概率最大化(MAP)估计算法原理以及相具体的应用实例附C++代码示例
  • 源码编译安装LAMP
  • Python 3.12数据结构与算法革命
  • 实现使用Lucene对某个信息内容进行高频词提取并输出
  • 2025年04月29日Github流行趋势
  • TA学习之路——2.4 图形传统光照模型详解