ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2134|回复: 11

[求助] 每页打印“5行”“可见”“单元格”(红包跪求,求助大神)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-16 11:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 haugine 于 2017-10-16 16:24 编辑

描述:黄色部分为打印区域。
B4,C4,会根据情况进行筛选。
1~4行的是标题行,每页打印。
想要实现的内容:
1.筛选后的“可见”单元格,打印出来。
2.B或者C列,第5行开始,每页打印5行“合并单元格”。
3.产品图,功能特性,状态,这3列会插入图片。
最终实现的目标是,合并单元格不被拆分开来。

如果准确点描述(就是,如果打印的时候,
有一个合并单元格,被分成前页一半,后页一半,
则:直接将整个单元格放到下页打印)

还希望能帮忙给份VBA,实现H:k列的3列的合并单元格内的图片自动居中。
图片.png

打印指定合并单元格.rar

69.92 KB, 下载次数: 24

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-16 14:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
跪求大师,跪求大师

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-16 15:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
怎么都没有人来帮忙下,在线等,急求。
发红包。

TA的精华主题

TA的得分主题

发表于 2017-10-16 15:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
haugine 发表于 2017-10-16 15:37
怎么都没有人来帮忙下,在线等,急求。
发红包。

楼主的问题可能有点难度,处理也需要一些时间,请耐心等候。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-16 16:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lsc900707 发表于 2017-10-16 15:48
楼主的问题可能有点难度,处理也需要一些时间,请耐心等候。

好,只要能搞定,就可以。感激感激

TA的精华主题

TA的得分主题

发表于 2017-10-16 17:41 | 显示全部楼层
能给多大的红包呢?现在叫民工搬砖都要几百一天。

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-16 18:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wzsy2_mrf 发表于 2017-10-16 17:41
能给多大的红包呢?现在叫民工搬砖都要几百一天。

哦,您能搞定?

TA的精华主题

TA的得分主题

发表于 2017-10-17 16:45 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
haugine 发表于 2017-10-16 18:50
哦,您能搞定?

请问现在还有效吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-10-17 23:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jiaxinl 发表于 2017-10-17 16:45
请问现在还有效吗?

有效啊。

TA的精华主题

TA的得分主题

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

请查收附件及动态图,你看OK不?
关于你提到的第2点.B或者C列,第5行开始,每页打印5行“合并单元格”。
也会遇到合并单元格被拆分的时候。
还是采取如果打印的时候,有一个合并单元格,被分成前页一半,后页一半,移到下页打印

这样一来就不能每页保证5行“合并单元格”了


以下是代码
Sub 打印和调整图片()
  Dim dic, r%, i%, k%, j%, p%, rng As Range
  Application.ScreenUpdating = False
  Set dic = CreateObject("Scripting.Dictionary") '建立字典dic
  r = Cells(Rows.Count, 2).End(xlUp).Row  'B列非空单元格的行号
  ActiveSheet.PageSetup.PrintArea = ""
  ActiveSheet.PageSetup.PrintTitleRows = ""
  ActiveSheet.PageSetup.PrintArea = "$C$5:$K$" & r '设置列印区域
  ActiveSheet.PageSetup.PrintTitleRows = "$1:$4" '设置列印标题
  ActiveSheet.ResetAllPageBreaks '重设分隔符
  For i = 5 To r - 8
    If i <= r - 8 Then
      If Range("L" & i).MergeCells Then
        dic(i) = k + 1  '合并单元格的行号装入字典
        i = Mid(Range("L" & i).MergeArea.Address, InStrRev(Range("L" & i).MergeArea.Address, "$") + 1) '合并单元格右下脚的行号
      End If
    End If
  Next i
Application.Goto Range("B" & r + 1), True '滚动条到B列非空单元格的下一行
j = ActiveSheet.HPageBreaks.Count '水平分隔符的数量
For p = 1 To j  '在所有的水平分隔符中循环
  Set rng = [C:C].Find(ActiveSheet.HPageBreaks(p).Location, LookAt:=xlWhole) '分隔符所在的位置
  If dic.Exists(rng.Row) Then ActiveSheet.HPageBreaks.Add Before:=Range("C" & rng.Row) '分隔符所在位置的合并单元格的行号在字段中存在时,添加分隔符
Next p
Application.Goto Range("B1"), True '滚动条到B1
Call 图片居中
MsgBox "OK!", 64, "提示"


Application.EnableEvents = False '禁止事件
If (MsgBox("打印前是否预览?", vbYesNo, "提示")) = vbNo Then
  On Error Resume Next
  ActiveWindow.SelectedSheets.PrintOut Copies:=1 '打印1份
Else
  ActiveSheet.PrintPreview '打印预览
End If
Application.EnableEvents = True '启用事件
End Sub


Sub 图片居中()
Dim Shp As Shape, ad$, r%, c%
  For Each Shp In Sheet6.Shapes
    If Shp.Type = msoPicture Then  '为图片时
      ad = Replace(Shp.BottomRightCell.Address, "$", "") '获取图片右下脚所在的单元格地址
      If Range(ad).MergeCells Then '为合并单元格时
        r = Range(ad).MergeArea.Row '合并单元格的行号
        c = Range(ad).MergeArea.Column '合并单元格的列号
      End If
      With Shp  '位置和大小
        .LockAspectRatio = msoFalse '取消纵横比
        .Placement = xlMoveAndSize  '大小和位置随单元格而变
        .Height = Cells(r, c).MergeArea.Height - 30 '高
        .Width = Cells(r, c).MergeArea.Width - 30   '宽
        .Left = Cells(r, c).MergeArea.Left + (Cells(r, c).MergeArea.Width - .Width) / 2 '左
        .Top = Cells(r, c).MergeArea.Top + (Cells(r, c).MergeArea.Height - .Height) / 2 '顶
      End With
    End If
  Next Shp
End Sub

列印和调整图片.gif

打印指定合并单元格---.zip

110.2 KB, 下载次数: 8

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

本版积分规则

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

GMT+8, 2024-6-29 14:24 , Processed in 0.047376 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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