斯凯在工作表上有三个重要的单元格。一个单元格包含开始日期,第二个单元格包含结束日期,第三个单元格包含这些日期之间的交易总计。他希望在打印页面的页脚中动态添加这三部分数据。他想知道是否有一种方法可以将公式添加到页脚中,从而可以反映这些值。

在Excel中没有内置方法可以执行此操作,因为无法将公式输入页脚。它们不会被程序识别为公式。

但是,您可以使用宏来设置页脚。为了这种方法,让我们假设您的开始日期包含在单元格E1中,结束日期包含在单元格E2中,并且您的交易总数位于单元格E3中。在这种情况下,您可以使用如下宏:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim sTemp As String

With Worksheets("Sheet1")

' Set wording for date range         sTemp = .Range("E1").Text & " through " & .Range("E2").Text         sTemp = sTemp & " (" & .Range("E3").Text & ")"

.PageSetup.CenterFooter = sTemp     End With End Sub

在此宏中有几件事要注意。首先,该宏仅在名为Sheet1的工作表中设置页脚信息,尽管您可以将此工作表名称更改为所需的名称。其次,请注意,使用了.Text属性而不是.Value属性。实际上,可以使用三种方式引用单元格内容,如下所示:

sTemp = Worksheets("Sheet1").Range("E1")

sTemp = Worksheets("Sheet1").Range("E1").Value sTemp = Worksheets("Sheet1").Range("E1").Text

前两种方法是等效的。他们将sTemp设置为等于单元格的内容。第三种方法是不同的。它设置sTemp等于单元格的格式化文本。换句话说,sTemp等于单元格E1中的任何值,因为它在单元格中格式化。由于您正在使用日期和总和,因此这是您要使用的方法,因此它是宏中使用的方法。

第三,宏最终在sTemp变量中设置了页脚。如所写,该宏将创建一个类似于以下内容的页脚:

1 Mar 2016 through 15 Mar 2016 ($1,234.56)

同样,实际外观取决于单元格E1,E2和E3中的格式。宏在单词“ through”后面加上括号,并在交易总数中加上括号。您可以直接在宏中修改这些其他元素。

第四,宏将格式化的sTemp字符串(您的页脚)分配到工作表页面页脚的中心位置。如果您希望页脚位于其他位置,则只需将.CenterFooter属性更改为.LeftFooter或.RightFooter。

最后,您需要知道该宏被设计为要添加到ThisWorkbook模块中。它是在打印工作簿之前自动运行的。但是,它不会通过在“打印预览”中查看工作表来触发,因此您无法指望在实际打印之前会看到什么。

注意:

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

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

本技巧(559)适用于Microsoft Excel 2007、2010、2013和2016。