米歇尔正在与她一起工作很长的工作表。当她为工作表使用“打印预览”时,“打印预览”对话框中显示的页面始终是第一页。 Michelle想知道是否有一种方法可以使“打印预览”自动显示她正在工作的工作表页面。

解决此问题的一种方法是尝试使用打印区域。如果选择工作表所在的区域,然后将打印区域设置为与选择的区域相等,那么在显示“打印预览”时,您应该只会看到该打印区域。

如果这样做不能满足您的需求,那么您可能会认为可以使用宏。这是一个可能为您提供帮助的示例宏:

Sub PrintPreviewActivePage()

Dim lActiveRow As Long     Dim iActiveCol As Integer     Dim iHPBs As Integer     Dim iVPBs As Integer     Dim lRow As Integer     Dim iCol As Integer     Dim iPage As Integer

lActiveRow = ActiveCell.Row     iActiveCol = ActiveCell.Column     ActiveSheet.UsedRange

If IsEmpty(ActiveCell.SpecialCells(xlCellTypeLastCell)) Then _       ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " "

If lActiveRow > ActiveCell.SpecialCells(xlCellTypeLastCell).Row Or _       iActiveCol > ActiveCell.SpecialCells(xlCellTypeLastCell).Column Then _       Exit Sub

With ActiveSheet         iHPBs = .HPageBreaks.Count         iVPBs = .VPageBreaks.Count         lRow = 0         iCol = 0         If iHPBs > 0 Or iVPBs > 0 Then             For lRow = iHPBs To 1 Step -1                 If .HPageBreaks(lRow).Location.Row <= lActiveRow Then Exit For             Next lRow             For iCol = iVPBs To 1 Step -1                 If .VPageBreaks(iCol).Location.Column <= iActiveCol Then Exit For             Next iCol         End If         iPage = (lRow + 1) + (iCol * (iHPBs + 1))

.PrintOut From:=iPage, To:=iPage, Preview:=True         MsgBox "Previewed page " & iPage     End With     If ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " Then _       Selection.SpecialCells(xlCellTypeLastCell).ClearContents End Sub

实际上,此宏是在Internet上进行一些侦查后可以找到的任何数量的宏的变体。它有两个关键部分:首先,宏会确定您在工作表中位于哪个“页面”上;然后,它使用.PrintOut方法并将Preview参数设置为True,从而调用Print Preview。

在一些工作表中,该宏可能会很好用,但是在它是否会起作用方面却很变幻无常。在大多数测试中,除非使用了非常小的工作表,否则我无法使其正常工作。 (换句话说,只有很少的行和列。)如果在大型工作表上运行它,您将很快发现在检查.HPageBreaks集合的成员的循环中出现“下标超出范围”错误。当您不使用超出范围的成员(lRow永远不会在.Count属性返回的值之外变化)时,如何发生这种情况令人困惑。

但是,微软似乎承认这是一个问题。实际上,多年来他们已经认识到但从未解决过这个问题:

https://support.microsoft.com/en-us/help/210663/

但是,网页上建议的解决方案实际上并不起作用。因此,我们只能使用一个宏,该宏只能在工作表上可靠地工作,而在这些工作表上,您只需要处理一个页面就不需要计算页码。啊!

最重要的是,在可预见的将来,基于宏的方法可能无法满足Michelle的需求。这使我们只剩下本文开头所述的打印区域方法。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13578)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。