EXCEL如何在单元格中获取打印分页的当前页数和总页数
如图,这是一个在表中自制的表头,并且在打印区域中设定为顶端标题行的一部分,想要在单元格中显示"PAGENO页码____当前页OF总页数___",表有许多页。麻烦告知使用v...
如图,这是一个在表中自制的表头,并且在打印区域中设定为顶端标题行的一部分,想要在单元格中显示 "PAGE NO页码____当前页 OF 总页数___" , 表有许多页。麻烦告知使用vba和不使用vba的方法,谢谢。我用的2007版
展开
1个回答
展开全部
只能用VBA解决,下面的代码由 cbtaja 录制,将下面代码粘贴进 工具--宏--VB编辑器后,用公式 =ThisPageNo 显示当前页数,=PagesCount显示总页数;=TEXT(ThisPageNo,"第0页 ")&TEXT(PagesCount,"共0页") 在同一单元格显示当前页数和总页数
Sub 定义页码及总页数名称()
'
' 定义页码及总页数名称 Macro
'
'
ActiveWorkbook.Names.Add Name:="ColFirst", RefersToR1C1:= _
"=GET.DOCUMENT(61)" '判断打印顺序的设置类型
ActiveWorkbook.Names.Add Name:="lstRow", RefersToR1C1:= _
"=GET.DOCUMENT(10)" '本工作表已用到的最大行数
ActiveWorkbook.Names.Add Name:="lstColumn", RefersToR1C1:= _
"=GET.DOCUMENT(12)" '本工作表已用到的最大列数
ActiveWorkbook.Names.Add Name:="hNum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64),Row()))" 'hNum为本单元格上方的水平分页符个数
ActiveWorkbook.Names.Add Name:="vNum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT(65),Column()))" ''本单元格左边的垂直分页个数
ActiveWorkbook.Names.Add Name:="hSum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),lstRow)),0,FREQUENCY(GET.DOCUMENT(64),lstRow))" ''本工作表最后一个单元格上方的水平分页符个数
ActiveWorkbook.Names.Add Name:="vSum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),lstColumn)),0,FREQUENCY(GET.DOCUMENT(65),lstColumn))" ''本工作表最后一个单元格左边的垂直分页个数
ActiveWorkbook.Names.Add Name:="ThisPageNo", RefersToR1C1:= _
"=IF(ColFirst,(hSum+1)*vNum+hNum+1,(vSum+1)*hNum+vNum+1)*ISNUMBER(NOW())" '单元格所在页码
ActiveWorkbook.Names.Add Name:="PagesCount", RefersToR1C1:= _
"=GET.DOCUMENT(50)*ISNUMBER(NOW())" '本工作表的总页数
End Sub
Sub 定义页码及总页数名称()
'
' 定义页码及总页数名称 Macro
'
'
ActiveWorkbook.Names.Add Name:="ColFirst", RefersToR1C1:= _
"=GET.DOCUMENT(61)" '判断打印顺序的设置类型
ActiveWorkbook.Names.Add Name:="lstRow", RefersToR1C1:= _
"=GET.DOCUMENT(10)" '本工作表已用到的最大行数
ActiveWorkbook.Names.Add Name:="lstColumn", RefersToR1C1:= _
"=GET.DOCUMENT(12)" '本工作表已用到的最大列数
ActiveWorkbook.Names.Add Name:="hNum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),Row())),0,FREQUENCY(GET.DOCUMENT(64),Row()))" 'hNum为本单元格上方的水平分页符个数
ActiveWorkbook.Names.Add Name:="vNum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),Column())),0,FREQUENCY(GET.DOCUMENT(65),Column()))" ''本单元格左边的垂直分页个数
ActiveWorkbook.Names.Add Name:="hSum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(64),lstRow)),0,FREQUENCY(GET.DOCUMENT(64),lstRow))" ''本工作表最后一个单元格上方的水平分页符个数
ActiveWorkbook.Names.Add Name:="vSum", RefersToR1C1:= _
"=IF(ISERROR(FREQUENCY(GET.DOCUMENT(65),lstColumn)),0,FREQUENCY(GET.DOCUMENT(65),lstColumn))" ''本工作表最后一个单元格左边的垂直分页个数
ActiveWorkbook.Names.Add Name:="ThisPageNo", RefersToR1C1:= _
"=IF(ColFirst,(hSum+1)*vNum+hNum+1,(vSum+1)*hNum+vNum+1)*ISNUMBER(NOW())" '单元格所在页码
ActiveWorkbook.Names.Add Name:="PagesCount", RefersToR1C1:= _
"=GET.DOCUMENT(50)*ISNUMBER(NOW())" '本工作表的总页数
End Sub
追问
按您说的试过了,效果和使用自定义名称的那个方法一样,都无法满足我的需求。实现这个功能的单元格是顶端标题行里面的"PAGE No.页码___1__OF 6________"这个单元格,也就是说打印的每一页都会打印这个单元格,但是我希望这个单元格可以根据当前实际页码和总页数显示相应的1/6, 2/6, 3/6.....6/6,而不是固定的1/6。或者是我在什么地方设置错了?能发个实例来看看么?22887826@qq.com
参考资料: http://club.excelhome.net/thread-573264-1-1.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询