
在excel工作表的任意单元格中设置页码.doc
6页★Excel 服务器学习和下载园地 ★[分享] 在 Excel 工作表的任意单元格中设置页码 [复制链接] 文章不当之处,请 Excel VBA 高手指教为谢!转载于一片白云博客: 问:在 Excel 中设置第几页共几页,绝大部分人会想道用“页面设置” ,但你是否想过将“第 N 页/总 M 页”放到任意单元格中?而不仅仅是置于页眉页脚中?答:实现方法一般有两种:使用 VBA 和使用宏表函数方法一,用 VBAPublic Function Page(x As Range, z As Byte)'特别注意:当 Z 参数是 0 时,统计指定单元格所在页的页码(是以列分页符的值是 1为前提条件的)'由自定义函数的 Z 参数来确定是进行工作表选定单元格所在页数'或是工作表总页数计算'当 Z 参数是 0 时,统计指定单元格所在页的页码'当 Z 参数是 1 至 255 任一个数值时,统计工作表总页数If z = 0 Thenih = 0For Each yh In ActiveSheet.HPageBreaksih = ih + 1If x.Row <= yh.Location.Row ThenPage = ihExit FunctionEnd IfNext yhPage = ih + 1 '以上 8 行代码及本行代码,最终得出指定单元格所在页的页码ElsePage = (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1) '统计工作表总页数End If Application.Volatile '本代码将此自定义函数标识为易失性函数,对自定义函数进行重算End Function举例 1:我们要 A1 单元格中得出 “当前工作表指定的单元格(A100)所在页数”是多少页?=page(a100,0)举例 2:我们要 A1 单元格中得出 “当前工作表总页数”是多少页?=page(a100,1)这里的公式中,单元格引用(A100 )可以是任意单元格引用(公式所在单元格除外,否则会出现循环引用,出现错误) ;Z 参数可以是 1 至 255 之间的任意值。
方法二,用宏表函数与公式1. 首先:使用快捷键 CTRL+F3 打开定义名称,再在上面输入“纵当页” ,在下面引用位置处输入:=IF(ISNA(MATCH(ROW(),GET.DOCUMENT(64))),1,MATCH(ROW(),GET.DOCUMENT(64))+1)2. 然后再继续添加第二个名称: “横当页” ,在下面引用位置处输入:=IF(ISNA(MATCH(column(),GET.DOCUMENT(65))),1,MATCH(column(),GET.DOCUMENT(65))+1)3. 再输入“总页” ;引用位置处输入:=GET.DOCUMENT(50)+RAND()*04. 最后再定义“页眉” ,引用位置:=" 第"&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/A3 指明文件类型的数1 = 工作表2 = 图表 3 = 宏表 4 = 活动的信息窗口5 = 保留文件6 = 模块表7 = 对话框编辑表4 如果最后一次存储文件后表发生了变化,返回 TRUE;否则,返回 FALSE5 如果表为只读,返回 TRUE;否则,返回 FALSE6 如果表设置了口令加以保护,返回 TRUE;否则,返回 FALSE7 如果表中的单元格,表中的内容或图表中的系列被保护,返回 TRUE;否则,返回 FALSE8 如果工作簿窗口被保护,返回 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/A11 主图表系列的数12 覆盖图表系列的数下列 Type_num 的值用于工作表,宏表,在适当的时候用于图表Type_num 返回9 第一个使用行的编号如文件是空的,返回零10 最后一个使用行的偏号如文件是空的,返回零11 第一个使用列的编号如文件是空的,返回零12 最后一个使用列的编号如文件是空的 ,返回零13 窗口的编号14 指明计算方式的数1 = 自动生成 有2 = 除表格外自动生成3 = 手动15 如果在[选项]对话框的[重新计算]标签下选择[迭代计算]选择框,返回TRUE;否则,返回 FALSE。
16 最多迭代次数17 迭代计算最大误差18 如果在[选项]对话框的[重新计算]标签下选择[更新远程引用]选择框,返回 TRUE;否则,返回FALSE19 如果在[选项]对话框的[重新计算]标签下选择[以显示精度为准]选择框,返回 TRUE;否则,返回FALSE20 如果在[选项]对话框的[重新计算]标签下选择[1904 年日期系统]选择框,返回 TRUE;否则,返回FALSEType_num 是 21-29 之间的数,对应于 Microsoft Excel 先前版本的四种默认字体提供这些值是为了宏的兼容性下列 Type_num 数值应用于工作表,宏表和指定的图表Type_num 返回30 以文字形式返回当前表合并引用的水平数组如果列表是空的,返回错误值#N/A31 1 至 11 之间的一个数,指明用于当前合并的函数对应于每个数的函数列于下面 CONSOLIDATE 函数中,默认函数为 SUM32 三项水平数组,用于指明 Data Consolidate 对话框中选择框的状态如果此项为TRUE,选择选择框;如果此项为 FALSE,清除选择框. 第一项指明[顶端行]选择框,第二项指[最左列]选择框,第三项指[与源数据链接]选择框。
33 如果选择了[选项]对话框的[重新计算]标签下的[保存前自动重算]选择框,返回 TRUE;否则,返回 FALSE34 如工作簿定义为只读,返回 TRUE;否则,返回 FALSE35 工作簿为写保护,返回 TRUE;否则,返回 FALSE36 如文件设置了写保护口令,并以可读/可写方式打开,返回最初使用写保护口令存文件的用户的名字如文件以只读形式打开,或文件未设置口令,返回当前用户的名字37 对应于显示在[另存为]对话框中的文档的文件类型所有 Microsoft Excel 可识别的文件类型列于SAVE.AS 函数中38 如果选择了[分级显示设置]对话框中的[明细数据的下方]选择框,返回TRUE;否则,返回 FALSE39 如果选择了[分级显示设置]对话框中的[明细数据的右侧]选择框,返回TRUE;否则,返回 FALSE40 如果选择了[另存为]对话框中的[生成备份文件]选择框,返回 TRUE;否则,返回 FALSE41 1 至 3 中的一个数字,指明是否显示对象:1 = 显示所有对象2 = 图和表的位置标志符3 = 所有对象被隐藏42 包括表中所有对象的水平数组,如无对象,返回错误值 #N/A。
43 如果在[选项]对话框的[重新计算]标签下选择了[保存外部链接值]选择框,返回 TRUE;否则,返回 FALSE44 如文件中的对象被保护,返回 TRUE;否则,返回 FALSE45 0 至 3 中的一个数,指明窗口同步化方式0 = 不同步1 = 水平方向上同步2 = 垂直方向上同步3 = 水平方向,垂直方向上均同步46 七项水平数组,用于打印设置,可由 LINE.PRINT 宏函数完成 建立文字- 左边距- 右边距- 顶边距- 底边距- 页长- 用于指明打印时输出是否格式化的逻辑值,格式化为 TRUE,非格式化为 FALSE47 如果在[选项]对话框的[转换]标签中选择了[转换表达式求值]选择框,返回 TRUE;否则,返回 FALSE48 标准栏宽度设置下列 type_num 值对应于打印与页的设置Type_num 返回49 开始页的页码,如未指明或在[页面设置]对话框的[页面]标签下的[起始页码]文字框输入了“自动” ,返回错误值#N/A 。
50 当前设置下欲打印的总页数,其中包括注释,如果文件为图表,值为 151 如只打印注释时的总页数如文件为图表类型,返回错误值#N/A52 在当前指定的单位中,指明边距设置(左,右,顶,底) 的四项水平数组53 指明方向的数字:1 = 纵向2 = 横向54 文本串的页眉,包括格式化代码55 文本串的脚注,包括格式化代码56 包括两个逻辑值的水平数组,对应于水平垂直方向置中57 如打印行或列的上标题,返回 TRUE;否则,返回 FALSE58 如打印网格线,返回 TRUE;否则,返回 FALSE59 如表以黑白方式打印,返回 TRUE;否则,返回 FALSE60 1 至 3 中的一个数,指明打印时定义图表大小的方式1 = 屏幕大小2 = 调整到3 = 使用整页61 指明重排页命令的数:1 = 先列后行2 = 先行后列如文件为图表类型,返回错误值#N/A62 扩缩比,未指定时为 100%如当前打印机不支持此项操作或文件为图表类型时,返回错误值#N/A。
63 一个两项水平数组,指明其报表需按比例换算,以适合的页数印出,第一项等于宽度(如未指明宽度按比例缩放,返回 #N/A)第二项等于高度(如未指明高度按比例缩放,返回#N/A) 如文件为图表类型,返回#N/A 64 行数的数组,相应于手动或自动生成页中断下面的行只有在满一页的时候才有用且只计算第一页65 列数的数组。
