• “慰安妇”及领土问题引争端 韩日关系再起波澜 2018-06-18
  • 崔世安:特区政府支持澳门青年到内地实习和学习-澳门-时政频道-中工网 2018-06-18
  • 西成高铁可刷身份证乘车 2018-06-18
  • 国家卫健委:未来老人照护的主体应是社区和家庭 2018-06-18
  • 4月用电量增速回升至7.8% 2018-06-17
  • 白色污染带来生存危机 限塑令实施十年效果难言满意-中工博客-中工网 2018-06-17
  • 明年国际油价稳中看涨 电动车应用或催生原油需求拐点 2018-06-16
  • 大型儿童歌舞剧《东方梦娃》首演 2018-06-16
  • 北京警方全面启动春运安保工作 抓获嫌疑人1600余人 2018-06-16
  • 陕西小贷行业规模位居全国中游 19个省份小贷公司减少|陕西|小贷-要闻 2018-06-15
  • 黄毅清凌晨爆料:赵薇已经离婚!赵薇工作室辟谣! 2018-06-15
  • 山西代表团审议“两高”报告 骆惠宁楼阳生参加审议 2018-06-15
  • “2018世界杯战绩”在看全迅网【独家微视频】美国总统特朗普结束对中国的国事访问 抵达… 2018-06-14
  • 深圳今年拟资助254个“双创”项目 2018-06-14
  • 阳泉煤业:高度重视现金分红工作 2017年净利预增逾265% 2018-06-14
  • Excel VBA 实现跨页合并单元格后重新合并并适应分页打印

    时间:2017-10-24   作者:snow   来源:Office之家

    应用场景

    跨页合并单元格后重新合并并适应分页打印

    知识要点

    1:ActiveWindow.View = xlPageBreakPreview 分页预览模式,判断分页符位置

    2:HPageBreaks 对象  打印区域内水平分页符的集合

    3:HPageBreak.Location 属性  返回或设置定义分页符位置的单元格(Range 对象)。

    4:判断页面的最后一个单元格与下一页第一个单元格是否处于同一合并区域

    5:Range.UnMerge 方法 将合并区域分解为独立的单元格

    6:合并单元格是否跨页只能在分页预览模式下才体现出来

    Sub 重组跨页合并() '将跨页的合并单元格重新合并从而适应分页打印

        Dim p, MerageAddress As String, PageCell As Range, MergeValue

        Application.ScreenUpdating = False

        ActiveWindow.View = xlPageBreakPreview '进入分页预览,才可以判断分页符位置

        For Each p In ActiveSheet.HPageBreaks  '逐页循环 hpagebreaks对象,打印区域内水平分页符的集合

            'hpagebreak.location属性,返回或设置定义分页符位置的单元格(range对象)

            Set PageCell = Cells(p.Location.Row - 1, ActiveCell.Column) '将每个分页最后一个单元格赋予变量

            '如果该页最后一个单元格具有合并属性,而且与下一页第一个单元格处于同一个合并区域

            If PageCell.MergeCells And Not Intersect(Cells(p.Location.Row, ActiveCell.Column), PageCell.MergeArea) Is Nothing Then

                MerageAddress = PageCell.MergeArea.Address '取得合并区域的地址

                MergeValue = PageCell.MergeArea(1).Value '取得合并区域的值

                PageCell.MergeArea.UnMerge '取消合并

                Range(Range(MerageAddress)(1), PageCell).Merge '将合并区域中处于本页的单元格合并

                Range(Range(MerageAddress)(1), PageCell).Borders.LineStyle = xlContinuous '添加边框

                With Range(PageCell.Offset(1, 0), Cells(Split(MerageAddress, "$")(4), ActiveCell.Column))

                    .Merge '再将合并区域中处于下一页的单元格合并

                    .Value = MergeValue '赋值

                    .HorizontalAlignment = xlCenter '左右居中

                    .VerticalAlignment = xlCenter '上下居中

                    .Borders.LineStyle = xlContinuous

                End With

            End If

        Next

        Application.ScreenUpdating = True

        ActiveWindow.View = xlNormalView '还原为常规视图

    End Sub

    发表评论