Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA自定义函数:获取指定单元格所在的页码

VBA自定义函数:获取指定单元格所在的页码

作者头像
fanjy
发布于 2023-12-21 04:31:29
发布于 2023-12-21 04:31:29
37500
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:VBA

下面的自定义函数可以获取指定单元格所在的页码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Function PageNumber( _
       Optional ByRef target As Excel.Range, _
       Optional ByVal nStart As Long = 1&) As Variant
 Dim pbHorizontal As HPageBreak
 Dim pbVertical As VPageBreak
 Dim nHorizontalPageBreaks As Long
 Dim nPageNumber As Long
 Dim nVerticalPageBreaks As Long
 Dim nRow As Long
 Dim nCol As Long
 
 On Error GoTo ErrHandler
 Application.Volatile
 If target Is Nothing Then _
   Set target = Application.Caller
 With target
   nRow = .Row
   nCol = .Column
   With .Parent
     If .PageSetup.Order = xlDownThenOver Then
       nHorizontalPageBreaks = .HPageBreaks.Count + 1&
       nVerticalPageBreaks = 1&
     Else
       nHorizontalPageBreaks = 1&
       nVerticalPageBreaks = .VPageBreaks.Count + 1&
     End If
     nPageNumber = nStart
     For Each pbHorizontal In .HPageBreaks
       If pbHorizontal.Location.Row > nRow Then Exit For
       nPageNumber = nPageNumber + nVerticalPageBreaks
     Next pbHorizontal
     For Each pbVertical In .VPageBreaks
       If pbVertical.Location.Column > nCol Then Exit For
       nPageNumber = nPageNumber + nHorizontalPageBreaks
     Next pbVertical
   End With
 End With
 PageNumber = nPageNumber
ResumeHere:
 Exit Function
ErrHandler:
 PageNumber = CVErr(xlErrRef)
 Resume ResumeHere
End Function

可以这样调用上面的自定义函数:

= PageNumber(Cell, Start)

其中,

参数Cell,指定一个单元格,程序将给出这个单元格所在的页码。如果忽略,则为包含公式的单元格。

参数Start,指定起始页码,如果忽略则为1。

下面的测试代码调用该自定义函数获取当前单元格所在的页码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sub test()
 MsgBox PageNumber(ActiveCell, 1)
End Sub

注:本文的代码来源于mcgimpsey.com,这个网站有些不错的VBA程序,有兴趣的朋友可以去看看。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA程序:对加粗的单元格中的值求和
注意,当求和的单元格区域中单元格格式发生更改时,不会触发任何事件;而使用Application.Volatile语句,每当在工作表上的内容更改时,单元格都会重新计算。这意味着,仅对求和单元格区域中的单元格设置加粗格式,使用该自定义函数求和的值不会改变,除非按F9键强制计算,或者在工作表中输入内容导致工作表重新计算。
fanjy
2024/01/02
8870
VBA程序:对加粗的单元格中的值求和
VBA实用小程序79:统计不同值或唯一值的VBA自定义函数
我们说,这组数据有6个不同值:a,b,c,d,e,f;有3个唯一值:c,d,f,因为它们在列表中只出现了1次。
fanjy
2021/07/12
2K0
VBA实用小程序79:统计不同值或唯一值的VBA自定义函数
VBA代码:打印时隐藏指定的单元格区域
如果你不想隐藏工作表中的某些单元格,但是又不想将这些单元格打印出来,那么下面的程序可以帮助你实现这一点。这个程序来自于mcgimpsey.com,辑录于此供有兴趣的朋友参考。
fanjy
2023/12/26
3890
VBA代码:打印时隐藏指定的单元格区域
VBA自定义函数:一次查找并获取指定表格中的多个值
这个自定义函数来自于forum.ozgrid.com,可以在指定表中查找多个值,并返回一组结果,而这些结果可以传递给另一个函数。
fanjy
2024/03/25
6140
VBA自定义函数:一次查找并获取指定表格中的多个值
Excel VBA解读(141): 自定义函数性能改进示例
Pedro想知道怎样加速他的自定义函数,该函数需要计算35040个单元格的结果,即单元格与未知长度值列之间的最小差异。
fanjy
2019/07/19
1.5K0
VBA代码库09:增强的CELL函数和INFO函数
本文介绍的自定义函数来源于wellsr.com,以Excel的CELL函数和INFO函数为样板,可直接返回工作表或工作簿的名称或工作簿路径,以及与Excel及其操作环境有关的各种信息。本文对其内容进行了整理并分享于此,希望能够有助于VBA代码的学习,同时留存这个自定义函数以备所需。
fanjy
2021/01/20
4.8K0
VBA自定义函数:在单元格区域中创建不重复的随机数
有时候,我们需要创建一组不重复的随机组,例如在指定单元格区域中创建一组不重复的随机数用于模拟数据分析。
fanjy
2024/03/11
5220
VBA自定义函数:在单元格区域中创建不重复的随机数
一个VBA自定义函数,使用文本格式连接唯一值单元格
一个单元格区域内有一组数字,这些数字中存在多个相同的数字,想要将这些数字中的唯一值提取出来并组合成一串数字文本,如下图1所示。
fanjy
2022/03/04
1.9K0
一个VBA自定义函数,使用文本格式连接唯一值单元格
VBA实用小程序63: 查找并返回与指定属性匹配的所有单元格
本文介绍的VBA程序是一个自定义函数,整理自jkp-ads.com,很好地增强了内置的CallByName函数的适用性。
fanjy
2020/11/09
1.7K0
VBA实用小程序63: 查找并返回与指定属性匹配的所有单元格
VBA实战技巧04: 一个用于两个列表区域比较的自定义函数
本文整理自https://fastexcel.wordpress.com/,有兴趣的朋友可以研究一下。
fanjy
2020/04/14
1.4K0
使用VBA跨单元格分配值
这是在exceloffthegrid.com中看到的一个案例,一个非常有用的节省时间的宏:在单元格之间分配值。
fanjy
2023/08/29
5330
使用VBA跨单元格分配值
VBA自定义函数:可将特别大的十进制数转换成二进制数
Excel中的DEC2BIN()函数可以将十进制数字转换成二进制数字,但其存在局限性。本文介绍的VBA用户定义函数可以将-2147483647到2147483647(2^31-1)之间的十进制数值转换成二进制整数。如果要转换的数值为负,则返回二进制补码值(高位设置为1)。如果numBits小于表示数字所需的位数,则返回#NUM!。
fanjy
2023/12/26
4580
VBA自定义函数:可将特别大的十进制数转换成二进制数
基于单元格值查找并显示图片
之前的文章中介绍过这个技巧,这是在mcgimpsey.com中看到的,也辑录于此,供参考。
fanjy
2023/12/16
5850
基于单元格值查找并显示图片
Excel VBA解读(134): 使用Excel函数提高自定义函数的效率
在上篇文章中,我们展示了自定义函数有效的方式是通过将单元格区域读取到Variant型数组来传递单元格区域数据。本文将介绍在自定义函数中最有效的方式是使用Excel内置函数。
fanjy
2019/07/19
3.5K0
Excel VBA解读(134): 使用Excel函数提高自定义函数的效率
删除包含多行文本的单元格中重复文本的VBA自定义函数
如下图1所示,在单元格A1中包含多行文本,现在要求删除这些文本中开头单词相同的行,仅保留第1行,结果如图1单元格B1中所示。
fanjy
2024/07/05
5650
删除包含多行文本的单元格中重复文本的VBA自定义函数
VBA自定义函数:从文本中提取数字
下面是一个自定义函数,可以从文本中提取数字。这个函数来源于forum.ozgrid.com,辑录于此,供参考。
fanjy
2024/03/29
4210
VBA自定义函数:从文本中提取数字
VBA代码:自定义页眉页脚打印内容
要在工作表打印时每页上打印不同的页眉和页脚,可以使用VBA代码来实现。Excel中的页眉和页脚各分为三部分:LeftHeader、CenterHeader、RightHeader,以及LeftFooter、CenterFooter和RightFooter,可以根据需要更改使用或隐藏其中的一些。
fanjy
2023/12/26
8420
VBA代码:自定义页眉页脚打印内容
VBA实战技巧26:使用递归确定所有的引用单元格
在Excel中,经常存在一个单元格引用另一个单元格中,而另一个单元格又引用其他单元格的情形。如何使用VBA代码编程确定指定单元格的所有引用单元格呢?
fanjy
2021/07/12
1.6K0
VBA实战技巧26:使用递归确定所有的引用单元格
Excel VBA解读(139): 用户定义函数计算了多次
写在开头的话:本系列从第133篇开始的22篇文章,都是翻译改编自fastexcel.wordpress.com的Making your VBA UDFs Efficient系列,可能有点高深晦涩,但确实都是好的VBA用户自定义函数编程细节技巧和经验。对于大多数人来说,你可以略过这些内容,因为我们只需懂得基础的VBA用户自定义函数知识就足够了。对于想深入研究VBA的人来说,还是值得研究和试验的。我刚开始看到这些文章的时候,一是水平有限,看不大懂,也觉得没有什么必要,所以一直收藏着。然而,随着自已研究VBA的深入,不由得佩服老外对VBA研究的深入,此时刚好Excel VBA解读系列又写到自定义函数这里,正好拿出来,边研究并翻译分享给大家。如果对这些内容没有兴趣的朋友,可以略过,免得浪费时间。
fanjy
2019/07/19
2.1K0
使用VBA自定义函数将文字拆分为完整的部分
这是wimgielis.com发表的一个VBA自定义函数,能够完整地提取句子的一部分,而不会截断单词。
fanjy
2024/01/30
3450
使用VBA自定义函数将文字拆分为完整的部分
推荐阅读
相关推荐
VBA程序:对加粗的单元格中的值求和
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验