Я пытаюсь создать шаблон Excel, который будет иметь три поля, которые я хочу автоматически обновлять, когда он открыт.

Поля, которые будут иметь этот шаблон

  • Текущая дата: 02/07/2012
  • Номер листа: 25
  • Между датой: с 02/07/2012 по 02/08/2012

Когда я открою этот шаблон после 03.08.2012, на этом листе появятся новые данные

  • Текущая дата: 03.08.2012
  • Номер листа: 26
  • Между датой: с 08.03.2012 по 02.09.2012

На текущую дату

Private Sub Workbook_Open() 
     ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Date 
End Sub

Можно ли это сделать с помощью функции Excel или мне нужно использовать VB, а также как автоматически обновить шаблон новыми значениями, чтобы в следующий раз использовать эти даты.

1 ответ1

0

Есть несколько способов добиться этого.

Самое простое предполагает, что даты начала и окончания совпадают.

  1. Даты "между" должны быть в двух ячейках. Дата "начала" установлена на 2-е число текущего месяца =DATE(YEAR( NOW() ), MONTH( NOW() ), 2) , дата "окончания" до 2-го числа текущего месяца +1 =DATE(YEAR( NOW() ), MONTH( NOW() ) +1, 2)
  2. "Текущая" дата затем просто устанавливается на "начальную" дату.

Однако вам нужно "исправить" эти даты при сохранении таблицы. Предполагая, что "текущая" дата находится в ячейке B3, а 2 между датами - в ячейках. Вы можете использовать что-то вроде:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Range("B3").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues

    Range("B5:C5").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues

End Sub

В модуле кода ThisWorkbook . Это просто делает копии / прошлые значения в ячейках, так что формула заменяется датами.

К сожалению, для этого требуется одно дополнение. Код, который я дал, немного упрощен, так как вы не сможете сохранить шаблон, поэтому вам нужно обернуть данный код во что-то, что препятствует его запуску при редактировании самого шаблона. Возможно, самый простой способ - использовать соглашение об именах файлов. Возможно, шаблон имеет текст "ШАБЛОН" в начале имени файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .