excel 2007 введите новую дату

excel 2007 введите новую дату

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

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

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

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

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

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

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

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

решение1

Добиться этого можно несколькими способами.

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

  1. Даты "between" должны быть в двух ячейках. Дата "start" устанавливается на 2-е число текущего месяца =DATE(YEAR( NOW() ), MONTH( NOW() ), 2), дата "end" на 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модуле кода. Это просто копирует/вставляет значения в ячейки, чтобы формула заменялась датами.

Упс, требуется одно дополнение к этому. Код, который я дал, немного упрощен, так как вы не сможете сохранить шаблон, поэтому вам нужно обернуть данный код во что-то, что не даст ему сработать при редактировании самого шаблона. Возможно, самый простой способ — использовать соглашение об именовании файлов. Возможно, шаблон имеет текст "TEMPLATE " в начале имени файла.

Связанный контент