大卫正在管理一个专业协会的选举,符合条件的选民名册是一张工作表。大约有1200名合格选民,因此打印输出超过20页。 David的页脚有页脚,这很有帮助。但是,如果他在每页的页眉中可以包含页面的名字和姓氏,那将是很好的选择。

在Excel中,没有本地方法可以做到这一点。但是,在Word中这样做相对容易,因此一种解决方案是将排序后的名称粘贴到Word文档中,然后添加所需的标题以显示名称。

尽管这可以解决问题,但要确保列表的Word版本始终与列表的Excel版本保持同步就变得很痛苦,反之亦然。

如果您决定要在Excel中保留投票者列表的单个版本,则解决此问题的最佳方法是使用宏在标头中插入名字和姓氏。显然,此类宏的代码需要针对工作表中数据的布局进行定制。下面的宏假定名称在A到C列中,而姓氏(您要用于标题的名称)在C列中。

Sub PrintNamesInHeader()

Dim iPages As Integer     Dim iPage As Integer     Dim iHorPgs As Integer     Dim iHP As Integer     Dim iHPNext As Integer     Dim iCol As Integer     Dim iColLast As Integer     Dim lRow As Long     Dim lRowLast As Long     Dim sPrtArea As String

iCol = 1        'Col A     iColLast = 3    'Col C     With ActiveSheet         iPages = ExecuteExcel4Macro("Get.Document(50)")

iHorPgs = .HPageBreaks.Count + 1         sPrtArea = .PageSetup.PrintArea

For iPage = 1 To iPages             iHP = ((iPage - 1) Mod iHorPgs)

iHPNext = iHP + 1             If iHP = 0 Then                 If sPrtArea = "" Then                     lRow = 1                 Else                     lRow = .Range(sPrtArea).Cells(1).Row                 End If             Else                 lRow = .HPageBreaks(iHP).Location.Row             End If             If iHPNext > .HPageBreaks.Count Then                 lRowLast = .Cells(lRow, iColLast).End(xlDown).Row             Else                 lRowLast = .HPageBreaks(iHPNext).Location.Row - 1             End If             .PageSetup.LeftHeader = .Cells(lRow, iCol).Value & _               " - " & .Cells(lRowLast, iColLast)

.PrintOut From:=iPage, To:=iPage, preview:=True         Next     End With End Sub

当您运行宏时,它将逐步浏览工作表的每一页。为页面设置页眉,然后打印单页,然后检查和处理下一页。

注意:

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

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

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

本技巧(9543)适用于Office 365中的Microsoft Excel 2007、2010、2013、2016、2019和Excel。您可以在此处找到适用于Excel的较旧菜单界面的本技巧的版本:

链接:/ excel-First_and_Last_Names_in_a_Page_Header [页面标题中的名字和姓氏]。