作者:绿色风
分类:
时间:2022-08-17
浏览:593
楼主 amulee |
Q:如何将跨页的合并单元格拆分使两页中都能显示? A:数据透视表是一个方便的汇总工具。当采用数据透视表进行汇总后,有些行标题可能出现跨页问题。此时如打印该表,则会在某页缺失行标题,如图所示:
如何编写VBA使这些跨页的合并单元格自动拆分,使其分别显示在两个页面中,效果如图:
请参考以下代码:
- Sub 拆分()
- Dim DSht As Worksheet
- Dim OSht As Worksheet
- Dim PB As HPageBreak
- Dim StLine As Long
- Dim MidLine As Long
- Dim EdLine As Long
- Dim Rng As Range
- Dim ColN As Integer
- Set DSht = Worksheets.Add
- Set OSht = Sheet1
- Application.ScreenUpdating = False
- DSht.Select
- '复制原表
- With OSht
- .Range("B4:F" & .Range("B65536").End(xlUp).Row).Copy DSht.Range("B1")
- End With
- ActiveWindow.View = xlPageBreakPreview
- With DSht
- For ColN = 1 To 2
- For Each PB In .HPageBreaks
- 'B列
- If PB.Location.Offset(-1, ColN).MergeArea.Address = PB.Location.Offset(0, ColN).MergeArea.Address Then
- Set Rng = PB.Location.Offset(-1, ColN).MergeArea
- 'Get StartLine and EndLine
- StLine = Rng.Cells(1).Row
- MidLine = PB.Location.Row
- EdLine = Rng.Cells(Rng.Cells.Count).Row
- '取消合并
- Rng.UnMerge
- '写入值
- .Cells(MidLine, 1 + ColN) = .Cells(StLine, 1 + ColN).Text
- '重新合并
- .Range(.Cells(StLine, 1 + ColN), .Cells(MidLine - 1, 1 + ColN)).Merge
- .Range(.Cells(MidLine, 1 + ColN), .Cells(EdLine - 1, 1 + ColN)).Merge
- End If
- Next
- Next ColN
- End With
- Application.ScreenUpdating = True
- End Sub
单元格合并后的打印问题.rar |
2楼 liucq |
学习 |
3楼 tubulasi |
为什么我的C列没办法自动跨页断行呢?只有B列能达到效果…… |
4楼 shenlong2006 |
这个挺实用 |
5楼 meggieliu |
不得不说,很好很强大啊



|
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一