Formulário com Macro no Word 2003
Às vezes para executar uma operação é preciso recorrer 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 nos Campos de formulário suspensos (caixa de combinação), somá-los e lançar o resultado no Campo de formulário Texto (Caixa de texto).
Criando um Formulário com Macro
Neste exemplo temos um formulário e neste formulário temos três Campos de formulário suspenso (caixas de combinação) chamadas Dropdown1, Dropdown2 e Dropdown3 e um Campo de formulário texto (caixa de texto) chamada Texto1, mantendo os nomes-padrão atribuídos pelo programa.
Cada Campo de formulário suspenso possui vários valores que serão selecionados pelo usuário e o total deverá ser somado automaticamente no Campo de formulário texto.
Observe a sequência de imagens abaixo:
Selecionando o primeiro valor.
Selecionando o segundo valor.
Selecionando o terceiro valor.
Para que a somatória seja feita automaticamente no Campo de formulário texto (caixa de texto), vamos usar um pouco de programação VBA. Para isso clique no Menu Ferramentas >> Macro >> Editor do Visual Basic ou se referir acione a combinação de teclas Alt+F11.
No Editor do Visual Basic, você vê à esquerda a caixa Projeto. Clique em Project (Nome do Documento). Nome do Documento, aqui, é o nome do arquivo de seu formulário, sem extensão.
Dentro dessa pasta Project há outra, chamada Microsoft Word Objetos e, dentro desta última, ThisDocument. Dê um duplo clique em ThisDocument para abrir uma janela de código em branco.
Na janela de código em branco cole o seguinte código.
Sub SomaCampos()
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
End Sub
Deverá ficar assim:
Essa rotina (macro) chamada SomaCampos pega o valor atual dos três Campos de formulário suspenso (caixas de combinação), soma-os e escreve o resultado no Campo de formulário texto (caixa de texto).
Feche o Editor do Visual Basic.
Agora devemos ajustar o formulário, portanto, vamos voltar a cada Campo de formulário suspenso, selecione o campo 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. Repita esse procedimento em todas os Campos de formulário suspenso. Para finalizar clique em OK
Não se esqueça de proteger o formulário, pois isso é indispensável para que tudo funcione adequadamente. Para proteger o formulário você deve clicar na ferramenta Proteger formulário. Observe a imagem abaixo.
Selecione os valores dos Campos de formulário suspenso (caixas de combinação) e veja que o resultado no Campo de formulário texto (caixa de texto) atualiza automaticamente.
Considerações finais:
Use a tecla Tab para navegar pelos campos de formulários.
Tab para avançar
SHIFT + TAB para retornar
Para evitar erros na operação, incluí nas opções dos Campos de formulario suspenso (caixas de combinação) o valor 0 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.