Office中国论坛/Access中国论坛

标题: [求助]如何在单元格中插入当前页码和总页码? [打印本页]

作者: Blue_Aries    时间: 2005-6-9 02:41
标题: [求助]如何在单元格中插入当前页码和总页码?
麻烦诸位路过的朋友:

如何在单元格中插入当前页码和总页码?就是页脚上的,只不过改放在单格中?

如何锁定工作表的一至三行,一至三行无法修改即可
作者: 淼漫    时间: 2005-6-9 03:49
无法修改可使用单元格保护功能,

单元格里输入页码本人还无法答复,请高人指点
作者: 红池坝    时间: 2005-6-9 22:15
下面这个代码可以完成你的任务:Public Function PageNO(rng As Range)Application.Volatile

i = 0For Each hp In ActiveSheet.HPageBreaks

   i = i + 1

   If rng.Row <= hp.Location.Row Then

     PageNO = i

     Exit Function

   End If

Next hpPageNO = i + 1

End Function
作者: Blue_Aries    时间: 2005-6-10 05:08
感谢版主的,只是上面的代码在哪录入,在哪运行,我如何在单元格中调用,麻烦版主的了,我对EXCEL不熟悉,感谢
作者: 红池坝    时间: 2005-6-10 07:18
呵呵:一、录入:1、“工具”-“宏”-“Visul Basic 编辑器”:将打开VBA编辑环境。2、在VBA编辑器里:“插入”-“模块”,然后在代码编辑窗口(最大的空白框)中粘贴我上面提供的代码即可。二、使用:返回工作表,在单元格里输入公式:=PageNo(A1)     就会返回A1单元格所在的页码。这个函数还可以引用单元格自身,从而返回这个单元格所在的页码,比如在B5单元格里输入“=PageNo(B5)”就返回了B5单元格所在页码
作者: shisgs    时间: 2005-6-12 04:38
标题: 插入页码


不用那么复杂,给你个取页码的函数,总页码取最后的页码即可.

[attach]11172[/attach]



[此贴子已经被作者于2005-6-11 22:25:07编辑过]


作者: 红池坝    时间: 2005-6-12 06:03
你给的是结果,是授人以鱼;我说的是办法,是授仁以渔。
作者: 淼漫    时间: 2005-6-12 06:36
哈哈,鱼渔兼得,谢谢啦
作者: 晓月清风    时间: 2005-6-12 18:56
我也来摸鱼兼学钓鱼了,呵呵
作者: 晓月清风    时间: 2005-6-12 21:07
以下是引用红池坝在2005-6-9 14:15:00的发言:



下面这个代码可以完成你的任务:

Public Function PageNO(rng As Range)

Application.Volatile

i = 0

For Each hp In ActiveSheet.HPageBreaks

   i = i + 1

   If rng.Row <= hp.Location.Row Then

     PageNO = i

     Exit Function

   End If

Next hp

PageNO = i + 1

End Function

高手,我使用你的代码时,发现了一个问题,就是在第二页的第一行使用该函数,会显示为第一页(如图所示),请问如何解决这个问题?[attach]11174[/attach]


作者: 晓月清风    时间: 2005-6-12 21:09
以下是引用shisgs在2005-6-11 20:38:00的发言:







不用那么复杂,给你个取页码的函数,总页码取最后的页码即可.

[attach]11172[/attach]

可不可以公布一下你getpage代码,谢谢!

[此贴子已经被作者于2005-6-12 13:09:53编辑过]


作者: 晓月清风    时间: 2005-6-12 21:23
如何锁定工作表的一至三行,一至三行无法修改即可

1、选取整张工作表,然后按CTRL+1调出“设置单元格格式”,在“保护”中,看一下“锁定”复选框是否有打勾,如果有,点击一下,则放空,按"确定"

2、选取所要保护的行或列,然后按CTRL+1调出“设置单元格格式”,在“保护”中勾选“锁定”后,按"确定"

3、选择“工具”-“保护"-“保护工作表”,设置完之后就不能修改第二步中设置锁定的行或列了
作者: 红池坝    时间: 2005-6-13 06:58
回10楼明月兄:果然是这样,请把 If rng.Row <= hp.Location.Row Then 中的“小于等于”( <= )改为“小于”(<)即可。谢谢你的指点
作者: 晓月清风    时间: 2005-6-13 21:16
谢谢版主指教[em17]!
作者: bfwz    时间: 2006-6-16 15:10
非常好,但是页码多时,速度慢。如何快些?
作者: sundaozhi    时间: 2006-6-22 06:23
以下是引用红池坝在2005-6-9 14:15:00的发言:


下面这个代码可以完成你的任务:

Public Function PageNO(rng As Range)

Application.Volatile
i = 0

For Each hp In ActiveSheet.HPageBreaks
   i = i + 1
   If rng.Row <= hp.Location.Row Then
     PageNO = i
     Exit Function
   End If
Next hp

PageNO = i + 1
End Function

这里有两个问题, 一个是<=改成<, 象是已经发出帖了,另一个是只比较了ROW,没有考虑COL,如果表很宽就出错了.
作者: bbsbat    时间: 2006-6-23 00:16
以下是引用shisgs在2005-6-11 20:38:00的发言:



不用那么复杂,给你个取页码的函数,总页码取最后的页码即可.
[attach]11172[/attach]



请问这个函数怎么用?菜鸟啊,不要笑话我
作者: MorningQueen    时间: 2008-2-19 01:08
标题: 感谢
找了好久了,今天终于见着了,让我看看行不行。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3