1

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

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

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

有没有办法做到这一点?

4

1 回答 1

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基本上会告诉您它是打印预览还是实际打印命令。我认为它非常友好。

于 2009-07-26T02:16:04.570 回答