Formulário com Macro - Exemplo 1
Criar um Formulário com Macro às vezes é necessário para executar uma determinada operação que não seria possível senão recorressemos a uma pequena rotina de programação em linguagem Visual Basic For Applications -VBA.
Isso é necessário porque não há uma outra forma, senão via programação, de capturar os valores definidos em Caixa de Combinação, somá-los e lançar o resultado em um Campo Texto.
Neste exemplo temos um formulário com três Caixas de Combinação chamadas Dropdown1, Dropdown2 e Dropdown3 e um Campo de Texto chamado Texto1, mantendo os nomes-padrão atribuídos pelo programa.
Cada Caixa de Seleção possui vários valores que serão selecionados pelo usuário e o total deverá ser mostrado automaticamente no Campo Texto.
Para que a somatória seja feita automaticamente no Campo de Texto, vamos criar uma macro usando o Editor do Visual Basic - VBA. Para isso acione a Guia Desenvolvedor e no Grupo Código clique em Visual Basic ou se referir acione a combinação de teclas Alt+F11.
No ambiente de desenvolvimento Visual Basic, na Janela de Projeto clique em ThisDocument.
Clique no menu Inserir e em seguida clique em Módulo.
Na janela de código em branco adicione o seguinte código.
Sub Soma Campos()
On error GoTo Trata-erro
Dim a As Double, b As Double, c As Double
ActiveDocument.FormFields("Texto1").Result = " "
a = CDbl(ActiveDocument.FormFields("Dropdown1").Result)
b = CDbl(ActiveDocument.FormFields("Dropdown2").Result)
c = CDbl(ActiveDocument.FormFields("Dropdown3").Result)
ActiveDocument.FormFields("Texto1").Result = a + b + c
Trata-erro:
Exit Sub
End Sub
Deverá ficar assim:
A macro SomaCampos pega o valor atual das três Caixas de Combinação, soma-os e exibe o resultado no Campo Texto.
Agora feche o Editor do Visual Basic clicando no menu Arquivo e em Fechar e voltar para Microsoft Word, ou através do atalho ALT + Q.
Agora devemos ajustar o formulário, portanto, selecione a primeira Caixa de Combinação e com o botão direito do mouse selecione Propriedades.
Em Executar macro, na caixa Saída, selecione o nome da macro SomaCampos, que é uma das opções. Para finalizar clique em OK
Repita esse procedimento em todas as Caixas de Combinação.
Agora vamos Proteger o documento. Pra isso acione a Guia Desenvolvedor e no Grupo Proteger clique em Proteger Documento.
Clique em Restringir Formatação e Edição.
Note que ao lado direito surge a janela para configurações de proteção.
Em Restrições de edição tique em Permitir apenas este tipo de edição no documento: e na caixa de listagem selecione Preenchendo formulários, em seguida clique no botão Sim, Aplicar Proteção.
Defina uma senha e depois dê um OK.
Selecione os valores das Caixas de Combinação e veja que o resultado no Campo Texto atualiza automaticamente.
Use a tecla Tab para navegar pelos campos deformulários.
Tab para avançar
SHIFT + TAB para retornar
Para que uma macro possa ser executada é necessário alterar a configuração de Macro do Word. Pra isso clique no Botão do Office e em seguida clique no botão Opções, como mostra as imagens abaixo:
Na janela de Opções do Word clique em Central de Confiabilidade:
Clique em Configurações da Central de Confiabilidade...
Em Central de Confiabilidade clique em Configurações de Macro e em Configurações de Macro selecione a opção Habilitar todas as macros.
Para concluir clique no botão OK. Agora o Microsoft Word está habilitado para executar macros.
Considerações finais:
Para evitar erros na operação foi incluído nas opções das Caixas de Combinação o valor 0 (zero) como o primeiro da lista.
Também é possível deixar essa opção em branco ou trocá-la por algo como "Selecione um valor". Nesse caso, para evitar erro, seria necessário alterar o código: antes de executar a soma, verificar se o valor da caixa de combinação é um texto e, nesse caso, trabalhar com ele como equivalente ao valor numérico zero.
De qualquer forma também acrescentamos ao código um tratamento de erro em tempo de execução (On error GoTo Trata-erro), caso ocorra algum erro a rotina Trata-erro será executada.