
Estou tentando criar um modelo Excel que terá três campos que gosto de atualizar automaticamente quando estiver aberto.
Campos que este modelo terá
- Data Atual: 07/02/2012
- Número da folha: 25
- Entre Data: 07/02/2012 a 08/02/2012
Quando eu abrir este modelo após 08/03/2012 esta planilha terá novos dados
- Data Atual: 03/08/2012
- Número da folha: 26
- Entre Data: 03/08/2012 a 02/09/2012
Para data atual
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Date
End Sub
Isso pode ser feito usando a função Excel ou preciso usar VB e também como faço para atualizar o modelo automaticamente com novos valores para dizer na próxima vez que usar essas datas.
Responder1
Existem várias maneiras de conseguir isso.
O mais fácil pressupõe que as datas de início e término sejam consistentes.
- As datas “entre” devem estar em duas células. A data de "início" é definida para o dia 2 do mês atual
=DATE(YEAR( NOW() ), MONTH( NOW() ), 2)
, a data de "término" para o dia 2 do mês atual +1=DATE(YEAR( NOW() ), MONTH( NOW() ) +1, 2)
- A data “atual” é então simplesmente definida como a data “início”.
Porém, você precisa “consertar” essas datas quando a planilha for salva. Supondo que a data "atual" esteja na célula B3 e as 2 datas intermediárias estejam nas células . Você pode usar algo como:
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
No ThisWorkbook
módulo de código. Isso simplesmente copia/cola valores nas células para que a fórmula seja substituída pelas datas.
Ops, é necessária uma adição a isso. O código que forneci é um pouco simplista, já que você não seria capaz de salvar o modelo, então você precisa agrupar o código fornecido em algo que impeça que ele seja acionado ao editar o próprio modelo. Possivelmente a maneira mais fácil é usar uma convenção de nomenclatura nos arquivos. Talvez o modelo tenha o texto “TEMPLATE” no início do nome do arquivo.