在Excel工作表的任意单元格中设置页码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
★Excel服务器学习和下载园地★
[分享] 在Excel工作表的任意单元格中设置页码[复制链接]
文章不当之处,请Excel VBA高手指教为谢!
转载于一片白云博客:/ycy_sdfc/
问:在Excel中设置第几页共几页,绝大部分人会想道用“页面设置”,但你是否想过将“第N页/总M页”放到任意单元格中?而不仅仅是置于页眉页脚中?
答:实现方法一般有两种:使用VBA和使用宏表函数
方法一,用VBA
Public Function Page(x As Range, z As Byte)
'特别注意:当Z参数是0时,统计指定单元格所在页的页码(是以列分页符的值是1为前提条件的)
'由自定义函数的Z参数来确定是进行工作表选定单元格所在页数
'或是工作表总页数计算
'当Z参数是0时,统计指定单元格所在页的页码
'当Z参数是1至255任一个数值时,统计工作表总页数
If z = 0 Then
ih = 0
For Each yh In ActiveSheet.HPageBreaks
ih = ih + 1
If x.Row <= yh.Location.Row Then
Page = ih
Exit Function
End If
Next yh
Page = ih + 1 '以上8行代码及本行代码,最终得出指定单元格所在页的页码
Else
Page = (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1) '统计工作表总页数
End If
Application.V olatile '本代码将此自定义函数标识为易失性函数,对自定义函数进行重算End Function
举例1:我们要A1单元格中得出“当前工作表指定的单元格(A100)所在页数”是多少页?=page(a100,0)
举例2:我们要A1单元格中得出“当前工作表总页数”是多少页?
=page(a100,1)
这里的公式中,单元格引用(A100)可以是任意单元格引用(公式所在单元格除外,否则会出现循环引用,出现错误);Z参数可以是1至255之间的任意值。
方法二,用宏表函数与公式
1. 首先:使用快捷键CTRL+F3打开定义名称,再在上面输入“纵当页”,在下面引用位置处输入:=IF(ISNA(MA TCH(ROW(),GET.DOCUMENT(64))),1,MATCH(ROW(),GET.DOCUMENT(64)) +1)
2. 然后再继续添加第二个名称:“横当页”,在下面引用位置处输入:
=IF(ISNA(MA TCH(column(),GET.DOCUMENT(65))),1,MATCH(column(),GET.DOCUMENT( 65))+1)
3. 再输入“总页”;引用位置处输入:=GET.DOCUMENT(50)+RAND()*0
4. 最后再定义“页眉”,引用位置:="第"&IF(横当页=1,纵当页,横当页+纵当页)&"页/共"&总页&"页"
5. 在函数栏使用应用即可得到需要的页码
★关于方法二用到的宏函数知识补充:
GET.DOCUMENT(type_num, name_text)
Type_num 指明信息类型的数。下表列出type_num 的可能值与对应结果。
Type_num 返回
1 如果工作簿中不只一张表,用文字形式以“[Book1]Sheet1”的格式返回工作表的文件名。否则,只返回工作簿的文件名。工作簿文件名不包括驱动器,目录或窗口编号。通常最好使用GET. DOCUMENT(76) 和GET. DOCUMENT(88) 来返回活动工作表和活动工作簿的文件名。
2 作为文字,包括name_text的目录的路径。如果工作簿name_text未被保存,返回错误值#N/A。
3 指明文件类型的数
1 = 工作表
2 = 图表
3 = 宏表
4 = 活动的信息窗口
5 = 保留文件
6 = 模块表
7 = 对话框编辑表
4 如果最后一次存储文件后表发生了变化,返回TRUE;否则,返回FALSE。
5 如果表为只读,返回TRUE;否则,返回FALSE。
6 如果表设置了口令加以保护,返回TRUE;否则,返回FALSE。
7 如果表中的单元格,表中的内容或图表中的系列被保护,返回TRUE;否则,返回FALSE。
8 如果工作簿窗口被保护,返回TRUE;否则,返回FALSE。
下面四个type_num的数值只用于图表。
Type_num 返回
9 指示主图表的类型的数。
1 = 面积图
2 = 条形图
3 = 柱形图
4 = 折线形
5 = 饼形
6 = XY (散点图)
7 = 三维面积图
8 = 三维柱形图
9 = 三维折线图
10 = 三维饼图
11 = 雷达图
12 = 三维等形图
13 = 三维曲面图
14 = 圆环图
10 指示覆盖图表类型的数,同以上主图表的1,2,3,4,5,6,11和14。没有覆盖图表的情况下返回错误值#N/A
11 主图表系列的数
12 覆盖图表系列的数
下列Type_num 的值用于工作表,宏表,在适当的时候用于图表。
Type_num 返回
9 第一个使用行的编号。如文件是空的,返回零。
10 最后一个使用行的偏号。如文件是空的,返回零。
11 第一个使用列的编号。如文件是空的,返回零。
12 最后一个使用列的编号。如文件是空的,返回零。
13 窗口的编号。
14 指明计算方式的数。
1 = 自动生成有
2 = 除表格外自动生成
3 = 手动
15 如果在[选项]对话框的[重新计算]标签下选择[迭代计算]选择框,返回TRUE;否则,返回FALSE。
16 最多迭代次数。
17 迭代计算最大误差。
18 如果在[选项]对话框的[重新计算]标签下选择[更新远程引用]选择框,返回TRUE;否则,返回
FALSE。
19 如果在[选项]对话框的[重新计算]标签下选择[以显示精度为准]选择框,返回TRUE;否则,返回
FALSE。
20 如果在[选项]对话框的[重新计算]标签下选择[1904年日期系统]选择框,返回TRUE;否则,返回
FALSE。
Type_num 是21-29之间的数,对应于Microsoft Excel先前版本的四种默认字体。提供这些值是为了宏的兼容性。
下列Type_num 数值应用于工作表,宏表和指定的图表。
Type_num 返回
30 以文字形式返回当前表合并引用的水平数组。如果列表是空的,返回错误值#N/A。
31 1至11之间的一个数,指明用于当前合并的函数。对应于每个数的函数列于下面CONSOLIDATE函数中,默认函数为SUM。
32 三项水平数组,用于指明Data Consolidate对话框中选择框的状态。如果此项为TRUE,选择选择框;如果此项为FALSE,清除选择框. 第一项指明[顶端行]选择框,第二项指[最左列]选择框,第三项指[与源数据链接]选择框。
33 如果选择了[选项]对话框的[重新计算]标签下的[保存前自动重算]选择框,返回TRUE;否则,返回FALSE。