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

时间:2009-07-26 02:00:05

标签: excel excel-vba excel-2007 conditional-formatting vba

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

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

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

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

首先,插入一行并在分页符之前隐藏它。然后,您可以使用工作簿上的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基本上会告诉您它是打印预览还是实际打印命令。我认为它非常好。