Скай имеет три важные ячейки на листе. Одна ячейка содержит дату начала, вторая — дату окончания, а третья — сумму транзакций между этими датами. Он хотел бы иметь нижний колонтитул для печатной страницы, который динамически включает эти три части данных. Он задается вопросом, есть ли способ поместить формулу в нижний колонтитул, чтобы она отражала эти значения.

В 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. Макрос добавляет слово «через» и помещает в круглые скобки сумму транзакций. Вы можете изменить эти дополнительные элементы прямо в макросе.

В-четвертых, макрос назначает отформатированную строку sTemp (ваш нижний колонтитул) в центральную позицию в нижнем колонтитуле страницы для рабочего листа. Если вы предпочитаете, чтобы нижний колонтитул располагался в другом месте, вы можете просто изменить свойство .CenterFooter на .LeftFooter или .RightFooter.

Наконец, вы должны знать, что этот макрос предназначен для добавления в модуль ThisWorkbook. Он запускается автоматически непосредственно перед печатью книги. Однако он не запускается при просмотре листа в предварительном просмотре печати, поэтому вы не можете рассчитывать на то, что вы можете увидеть, прежде чем фактически распечатаете.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (559) применим к Microsoft Excel 2007, 2010, 2013 и 2016.