ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: taoningo

[求助] 请问各位高手,excel打印时跨页的合并单元格怎样打印才不会空白?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-9-21 10:52 | 显示全部楼层

试试 “ 跨页断行打印工具 ”  。

TA的精华主题

TA的得分主题

发表于 2023-3-14 15:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
'参考论坛里的资料 ,自己改了一下
Sub 跨页的合并单元格区域拆分以便打印()
    Dim 标题, 选项
    标题 = "跨页的合并单元格区域拆分以便打印,需要先设置一下打印区域"
    选项 = MsgBox("  是  :  已经按部分合并单元格局部调整分页符位置" & Chr(10) & "  否  :  在复制工作表上操作" & Chr(10) & "取消:退出并手动调整部分分页符位置 ", 3, 标题)
    If 选项 = 6 Then
        '
    ElseIf 选项 = 7 Then
        ActiveSheet.Copy After:=Worksheets(ActiveSheet.Index)
        ActiveSheet.Name = "按分页分拆合并单元格" & Format(Now, "mmddhhmmss") & Int((9 * Rnd) + 1)
    ElseIf 选项 = 2 Then
        ActiveWindow.View = xlPageBreakPreview  '打开分页预览,这样会出现分页符
        Exit Sub
    End If
    Application.ScreenUpdating = False '防止眼花了
    Application.DisplayAlerts = False '取消了警告提示
    Dim rng As Range, A1 As Range, A2 As Range, My_str, My_str_1, My_str_2
    Dim R, Nr, Nc, I As Integer, 边框线型, 线型粗细
    Dim sht As Worksheet
    Set sht = ActiveSheet
    Dim Sel_R_Start, Sel_C_Start, Sel_R_End, Sel_C_End
    Dim sel As Range
    Dim s_str As String
    With sht
        ActiveWindow.View = xlPageBreakPreview  '打开分页预览,这样会出现分页符
        If .PageSetup.PrintArea = "" Then
            .PageSetup.PrintArea = .UsedRange.Address
        End If
        s_str = .PageSetup.PrintArea
        Set sel = Range(s_str)
        Debug.Print sel.Address
        Sel_R_Start = sel.Row
        Sel_C_Start = sel.Column
        Sel_R_End = sel.Rows.Count + sel.Row - 1
        Sel_C_End = sel.Columns.Count + sel.Column - 1
        If .HPageBreaks.Count > 0 Then  '当大于一页时执行代码
        For Nr = 1 To .HPageBreaks.Count   '循环列举各个水平分页符位置
            R = .HPageBreaks(Nr).Location.Row   '取得当前列举到的水平分布所在的行的值
            I = R '储存行值的备份
            For Nc = Sel_C_Start To Sel_C_End
                If .Cells(R, Nc).MergeCells = True And .Cells(R, Nc).MergeArea.Cells(1).Row < I Then
                    With .Cells(R, Nc).MergeArea '.Select  '选中当前行的第一列的单元格
                        My_str = .Cells(1, 1).Value
                        My_str_1 = Split(.Address, "$")
                        My_str_1(4) = I - 1
                        My_str_2 = Split(.Address, "$")
                        My_str_2(2) = I & ":"
                        Set A1 = Range(Join(My_str_1, "$"))
                        Set A2 = Range(Join(My_str_2, "$"))
                        边框线型 = .Borders(xlEdgeBottom).LineStyle
                        线型粗细 = .Borders(xlEdgeBottom).Weight
                        Debug.Print 边框线型
                        .UnMerge
                        With A1
                            .Merge
                            .Value = My_str
                            .Borders(xlEdgeBottom).LineStyle = 边框线型
                            .Borders(xlEdgeBottom).Weight = 线型粗细
                        End With
                        With A2
                            .Merge
                            .Value = My_str
                            .Borders(xlEdgeTop).LineStyle = 边框线型
                            .Borders(xlEdgeTop).Weight = 线型粗细
                        End With
                    End With
                End If
            Next Nc
        Next Nr  '下一个水平分页符
    End If
    '    ActiveWindow.View = xlPageBreakPreview
    ActiveWindow.View = xlNormalView  '处理完成,恢复到普通视图
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True '打开警告提示
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-7 19:12 , Processed in 0.016436 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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