ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: wdf1268

[求助] 如何在每页后打印一个固定的表格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-5-7 09:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Vicel 发表于 2015-5-6 21:37
另类的解题方法:循环隐藏行区域内容以达到每页后打印一个固定表格的效果

你这“另类”法叫人怎么评说呢?!

总之,在我看来,还叫不上“另类”,因为不具适用性。而且,代码存在明显错漏,甚至逻辑自相矛盾。

姑且当批改作业(托大了):
1.当工作表不曾打印预览过或不曾分页预览过,运行你的代码会如何?
2.当第一页某一行或某些行畸高,从第2页起的后续各页你的代码打印输出的能有几行内容?
3.当指定了打印区域,你的代码能应付?
4.你的代码仅能打印输出工作表的最后几行,遑论其它工作表中的内容了(当然了,就本例来说,此点可忽略)。

结语:他人代码写得如此繁杂,一般情况下必有其道理,哪是廖廖几句代码就能解决的?而且本人早就有言,打印页面设置,历来烦杂。

TA的精华主题

TA的得分主题

发表于 2015-5-7 09:51 | 显示全部楼层
燕雀安知 发表于 2015-5-7 09:21
你这“另类”法叫人怎么评说呢?!

总之,在我看来,还叫不上“另类”,因为不具适用性。而且,代码存 ...

呵呵,你能!

我这里提供的代码是不具备通用性,只针对本帖问题提供一种解决问题的思路,仅此而已

TA的精华主题

TA的得分主题

发表于 2015-5-7 14:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
linyh1742595842 发表于 2015-5-6 16:38
老师!可否增加(第 x 页/共 x 页)的功能? 再加一个条件,打印时间。

几经修改,本代码通过inputbox选择底端需固定的区域,不再受工作表行高影响。
供参考,请测试
  1. Sub test()
  2.     Dim rng As Range, Rs&, r&, m&, n&, i&, T$
  3.     With ActiveSheet
  4.         Rs = .[A65536].End(xlUp).Row
  5.         n = .HPageBreaks.Count
  6.         If n = 0 Then
  7.             .PrintOut
  8.         ElseIf .HPageBreaks(1).Location.Row > Rs Then
  9.             .PrintOut
  10.         Else
  11.             T = Now
  12.             Set rng = Application.InputBox(Prompt:="请选择底端标题行", Title:="底端标题", Type:=8)
  13.             If Not rng Is Nothing Then
  14.                 r = rng.Row
  15.                 If r > Rs Then Exit Sub
  16.                 Application.ScreenUpdating = False
  17.                 m = n * rng.Rows.Count
  18.                 .Rows(r).Resize(m).Insert
  19.                 n = .HPageBreaks.Count
  20.                 If .HPageBreaks(n).Location.Row < .[A65536].End(xlUp).Row Then n = n + 1
  21.                 .Rows(r).Resize(m).Delete
  22.                 For i = 1 To n
  23.                     .Rows("1:" & r - 1).Hidden = True
  24.                     Do
  25.                         s = s + 1
  26.                         If s > r Then Exit Do
  27.                         .Rows(s).Hidden = False
  28.                         If .HPageBreaks.Count > 0 Then
  29.                             If .HPageBreaks(1).Location.Row <= Rs Then
  30.                                 Do
  31.                                     .Rows(s).Hidden = True
  32.                                     s = s - 1
  33.                                 Loop Until .HPageBreaks.Count = 0
  34.                             End If
  35.                             Exit Do
  36.                         End If
  37.                     Loop
  38.                     .PageSetup.CenterFooter = "第" & i & "页,共" & n & "页"
  39.                     .PageSetup.RightHeader = T
  40.                     .PrintOut
  41.                 Next i
  42.                 .Rows("1:" & r - 1).Hidden = False
  43.                 .PageSetup.CenterFooter = ""
  44.                 .PageSetup.RightHeader = ""
  45.                 Set rng = Nothing
  46.                 Application.ScreenUpdating = True
  47.             End If
  48.         End If
  49.     End With
  50. End Sub
复制代码
在每页后打印一个固定的表格.rar (23.66 KB, 下载次数: 63)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-5-7 15:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Vicel 发表于 2015-5-7 14:47
几经修改,本代码通过inputbox选择底端需固定的区域,不再受工作表行高影响。
供参考,请测试

大师,帮帮忙,比较并记录某一列完全相同的单元格相差的行数
http://club.excelhome.net/thread-1203637-1-1.html

TA的精华主题

TA的得分主题

发表于 2023-6-24 15:27 | 显示全部楼层
Vicel 发表于 2015-5-7 14:47
几经修改,本代码通过inputbox选择底端需固定的区域,不再受工作表行高影响。
供参考,请测试

测试了,确实是表头没有了,原来的打印标题设置好像对这个无效呀!

TA的精华主题

TA的得分主题

发表于 2023-9-1 20:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

VBA打印指定页时插入指定行

Vicel 发表于 2015-5-7 14:47
几经修改,本代码通过inputbox选择底端需固定的区域,不再受工作表行高影响。
供参考,请测试

老师你好,我加了设置固定表头的代码,不成功,请帮修改下好吧,谢谢你了老师!
  1.     On Error Resume Next
  2.     Set Regional = Application.InputBox("请选择固定表头,行!", "提示", , , , , Type:=8)
  3.     If Regional Is Nothing Then Exit Sub

  4.     With ActiveSheet.PageSetup
  5.         .PrintTitleRows = Regional.EntireRow.address    '表示选区整行地址
  6.     End With
复制代码


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-25 01:31 , Processed in 0.021770 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表