代码之家  ›  专栏  ›  技术社区  ›  Cade Roux

Excel打印条件内容/格式与屏幕和分页符

  •  1
  • Cade Roux  · 技术社区  · 15 年前

    我在Excel中有一个VBA发布宏,它基于主配置工作表和多个包含数据的工作表生成已发布的工作簿。发布的版本是直接的数据,仍然格式化,但没有公式,某些注释和背景信息被抑制。基本上,主配置包含要发布的工作表名称和范围的表。

    要使发布的版本可打印,某些工作表需要插入分页符。我意识到我可以基于相同的配置插入这些内容,还可以通过在主工作表中添加更多的列来更改特定工作表的打印方向和页边距。

    棘手的问题来了。如果一个表在发布过程中插入了这些分页符中的一些,我希望在分页符之前插入一个信息行,指示该表在下一页上继续。但我只希望它以打印版本显示,而不是在屏幕上显示。

    有办法吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Eric    15 年前

    首先,插入一行并将其隐藏在分页符之前。然后,您可以使用 BeforePrint 事件在工作簿中查找包含“请参阅下一页”文本的所有行,然后取消隐藏。

    Sub Workbook_BeforePrint(cancel as Boolean)
        Dim rngCell as Range
        set rngCell = ActiveSheet.UsedRange.Find("See Next Page")
    
        while not rngCell is Nothing
            if not rngCell is Nothing then
                rngCell.EntireRow.Hidden = false
            end if
            set rngCell = ActiveSheet.UsedRange.FindNext()
        loop
    End Sub
    

    如果你需要去的话,这会让你有所收获,但是,这会让你容易受到问题的影响,事实上没有 AfterPrint . 所以,你可以做的是:

    Sub Workbook_BeforePrint(cancel as Boolean)
        Application.EnableEvents = false
    
        'Unhide rows here
    
        if cancel then
            Workbook.PrintPreview()
        else
            Workbook.PrintOut()
        end if
    
        'Rehide rows here
    
        Application.EnableEvents = True
    End Sub
    

    注意 cancel 基本上会告诉您它是打印预览还是实际的打印命令。我想这是非常好的。