Cálculo com Datas em Formulário no Word 2007-Parte 2
No tutorial anterior "Calculos com datas em formulário no Word" vimos como calcular a diferença em dias entre duas datas, porém, neste novo tutorial darei mais um exemplo de como realizar Cálculo com Data em Campos de Formulário criando e executando uma macro que irá calcular qual será a data final quando somarmos um determinado número de dias a uma data inicial.
Adicionar Dias a Uma Data para calcular a Data Final.
Primeiramente vamos criar uma tabela com duas linhas e três colunas (Data Inicial, Número de Dias e Data Final), como o da imagem abaixo:
Adicione três Campos de Texto, um em cada coluna, como mostrado na imagem abaixo:
O objetivo deste formulário é exibir qual será a Data Final conforme o número de dias informado pelo usuário, sendo que a Data Inicial será sempre a data atual, portanto, mais adiante, iremos alterar as propriedades deste controle para que sempre seja exibida a data atual.
O usuário informará apenas o Número de Dias no Campo de Texto da segunda coluna da tabela e também adicionaremos no evento Saída, deste controle, a macro que ainda iremos criar.
Nosso próximo passo agora é criar a macro que será responsável pela execução do cálculo, portanto, acione a Guia Desenvolvedor e no Grupo Código clique em Visual Basic ou através do atalho ALT + F11.
No ambiente de programação clique no menu Inserir e em seguida clique em Módulo.
Neste novo Módulo criaremos uma macro e daremos a ela o seguinte nome: somandodias
Na Janela de Código, digite as seguintes linhas de código:
Sub somandodias()
Dim sData As Date' Declara as variáveis.
Dim Texto3
sData = ActiveDocument.FormFields("Texto2").Result
ActiveDocument.FormFields("Texto3").Result = DateAdd("d", Now, sData)
End Sub
Veja como ficará na Janela de Código:
Feito isso, feche o Editor do Visual Basic For Applications (VBA) para retornar ao Microsoft Word.
Agora chegou a hora de alterar as propriedades dos controles, portanto selecione o controle Campo de Texto da primeira coluna da tabela e clique sobre ele com o botão direito do mouse e selecione Propriedades.
Em Opções do campo de formulário texto faça as seguintes alterações:
Tipo: Data atual
Formato da data: dd/MM/yyyy
Agora selecione o controle Campo de Texto da segunda coluna da tabela e clique sobre ele com o botão direito do mouse e selecione Propriedades.
Em Opções do campo de formulário texto faça as seguintes alterações:
Tipo: Número
Formato do número: 0
Saída: selecione a macro somandodias
Selecione também a opção Calcular ao sair
Agora selecione o controle Campo de Texto da terceira coluna da tabela e clique sobre ele com o botão direito do mouse e selecione Propriedades.
Em Opções do campo de formulário texto faça as seguintes alterações:
Tipo: Data
Formato da data: dd/MM/yyyy
Agora é necessário proteger nosso formulário para que possamos utilizá-lo.
Na Guia Desenvolvedor, no Grupo Proteger clique em Proteger Documento.
Clique em Restringir Formatação e Edição
No lado direito da tela surgirão as opções de restrição. Em Restrições de edição selecione a opção “Permitir apenas este tipo de edição no documento:”, em seguida no menu DropDown selecione “Preenchendo Formulários”. Em seguida clique no botão Sim, Aplicar Proteção. Observe a imagem abaixo:
Digite uma senha para aplicar a proteção.
OBS: Proteger o formulário ativa os campos e permite que os usuários o completem. As outras áreas do formulário ficam protegidas de alterações, o que impossibilita que o usuário faça qualquer tipo de modificação.
Para desativar a proteção basta somente clicar no botão Parar Proteção e se você optou por colocar uma senha ela será requerida para desproteger.
Com o formulário protegido você deve navegar pelos campos usando a Tecla Tab.
Tab: avançar para o próximo campo
Shift + Tab: retornar ao campo anterior
Vamos fazer um teste:
Informe o Número de Dias e pressione a tecla TAB.
O controle Campo de Texto da terceira coluna é preenchido automaticamente quando a tecla TAB é pressionada.
OBS: Para que um formulário com macros funcione é necessário que a execução de macro esteja habilitada.
Considerações Finais: para evitar que ocorram erros aconselho a adicionar uma rotina de Tratamento de erros ao código. Por exemplo, se o usuário pressionar a tecla TAB sem informar a Data Final gerará um erro em tempo de execução.
Abaixo o código usado neste exemplo com tratamento de erros:
Sub calculandodata()
On Error GoTo Trata-Erro
Dim sData As Date ' Declara as variáveis
Dim Texto3
sData = ActiveDocument.FormFields("Texto2").Result
ActiveDocument.FormFields("Texto3").Result = DateAdd("d", Now, sData)
Trata-Erro: ' Em caso de erro o código seguinte é executado
Exit Sub 'Sai do procedimento
End Sub
Neste tutorial mostramos como calcular a adição dias a uma data, porém, é possível também calcular a adição de meses ou anos, basta fazer uma pequena alteração no código.
Para calcular a diferença em mês(es):
ActiveDocument.FormFields("Texto3").Result = DateAdd("M", Now, sData)
Para calcular a diferença em ano(s):
ActiveDocument.FormFields("Texto3").Result = DateAdd("yyyy", Now, sData)