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

我有一个Excel中的VBA发布macros,它基于主configuration​​工作表和一些工作表与数据生成已发布的工作簿。 发布的版本是直接的数据,仍然格式化,但没有公式,并禁止某些笔记和背景信息。 基本上,主configuration包含要发布的工作表名称和范围表。

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

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

有没有办法做到这一点?

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

 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没有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将基本上告诉你,如果它的打印预览或实际的打印命令。 我觉得它是非常好的。