Como Usar VBA para Exibir Caixa de Diálogo Personalizada no Word
🔍 WiseChecker

Como Usar VBA para Exibir Caixa de Diálogo Personalizada no Word

Você quer criar uma caixa de diálogo personalizada no Word usando VBA para coletar entrada do usuário ou exibir opções. As caixas de diálogo internas do Word não podem ser totalmente personalizadas para seu fluxo de trabalho específico. Este artigo explica como construir uma caixa de diálogo UserForm com VBA, adicionar controles e recuperar os valores inseridos pelo usuário. Você aprenderá as etapas exatas para projetar, codificar e iniciar sua própria caixa de diálogo dentro do Word.

Principais Conclusões: Construindo uma Caixa de Diálogo Personalizada com VBA no Word

  • Inserir > UserForm no Editor VBA: Cria uma tela em branco para sua caixa de diálogo personalizada.
  • Controles da Caixa de Ferramentas (TextBox, ComboBox, CommandButton): Adicione campos de entrada e botões ao seu UserForm.
  • Método UserForm.Show: Inicia a caixa de diálogo a partir de uma macro para que os usuários possam interagir com ela.

ADVERTISEMENT

O Que é um UserForm VBA e Por Que Usá-lo

Um UserForm é uma caixa de diálogo que você projeta no Editor do Visual Basic. Diferente das caixas de diálogo internas do Word, um UserForm pode conter qualquer combinação de caixas de texto, listas suspensas, caixas de seleção, botões de opção e outros controles. Você escreve código VBA por trás do formulário para lidar com o que acontece quando o usuário clica em um botão ou altera um valor.

Você precisa ter a guia Desenvolvedor habilitada no Word para acessar o Editor VBA. Se você não vir a guia Desenvolvedor, vá em Arquivo > Opções > Personalizar Faixa de Opções e marque a caixa Desenvolvedor no painel direito. O Editor VBA é aberto pressionando Alt+F11.

Uma caixa de diálogo personalizada é útil quando você precisa coletar várias informações antes de executar uma macro. Por exemplo, você pode pedir ao usuário para inserir um título de documento, selecionar um nome de modelo de uma lista e escolher uma opção de formatação. O UserForm armazena esses valores em variáveis que sua macro pode usar.

Etapas para Criar uma Caixa de Diálogo Personalizada com VBA

  1. Abra o Editor VBA e insira um UserForm
    Pressione Alt+F11 para abrir o Editor VBA. No painel do Gerenciador de Projetos, clique com o botão direito em Normal ou no projeto do seu documento atual. Escolha Inserir > UserForm. Um formulário em branco chamado UserForm1 aparece na janela do editor.
  2. Defina as propriedades do UserForm
    Com o UserForm selecionado, pressione F4 para abrir a janela Propriedades. Altere a propriedade Caption para um título descritivo como “Configuração do Documento”. Altere a propriedade Name para algo significativo como frmDocumentSetup. Defina Width e Height para valores que comportem seus controles, por exemplo 400 por 300.
  3. Adicione controles da Caixa de Ferramentas
    Se a Caixa de Ferramentas não estiver visível, vá em Exibir > Caixa de Ferramentas. Arraste um controle Label para o formulário e defina sua propriedade Caption como “Título do Documento:”. Arraste uma TextBox ao lado do rótulo. Arraste uma ComboBox abaixo do rótulo e defina sua propriedade RowSource posteriormente no código. Arraste dois controles CommandButton e defina suas propriedades Caption como “OK” e “Cancelar”.
  4. Escreva código para os botões OK e Cancelar
    Clique duas vezes no botão OK. O editor VBA abre a janela de código para aquele botão. Insira o seguinte código:
    Private Sub cmdOK_Click()
    Me.Hide
    End Sub

    Clique duas vezes no botão Cancelar e insira:
    Private Sub cmdCancel_Click()
    Me.Hide
    End Sub

    Mais tarde você adicionará código para ler os valores antes de ocultar.
  5. Escreva código para preencher a ComboBox quando o formulário carregar
    Na janela de código, selecione UserForm no menu suspenso esquerdo e Initialize no menu suspenso direito. Insira:
    Private Sub UserForm_Initialize()
    Me.cboTemplates.AddItem "Relatório"
    Me.cboTemplates.AddItem "Carta"
    Me.cboTemplates.AddItem "Memorando"
    End Sub

    Substitua cboTemplates pelo nome real da sua ComboBox.
  6. Escreva uma macro para exibir o UserForm e recuperar valores
    Insira um novo módulo (Inserir > Módulo) e insira:
    Sub ShowMyDialog()
    Dim strTitle As String
    Dim strTemplate As String
    frmDocumentSetup.Show
    strTitle = frmDocumentSetup.txtDocumentTitle.Text
    strTemplate = frmDocumentSetup.cboTemplates.Text
    MsgBox "Título: " & strTitle & vbCrLf & "Modelo: " & strTemplate
    End Sub

    Execute a macro pressionando F5 enquanto estiver no módulo ou atribuindo-a a um botão na Barra de Ferramentas de Acesso Rápido.
  7. Teste a caixa de diálogo
    Feche o Editor VBA e retorne ao Word. Pressione Alt+F8 para abrir a caixa de diálogo Macros. Selecione ShowMyDialog e clique em Executar. Sua caixa de diálogo personalizada aparece. Insira um título, selecione um modelo e clique em OK. Uma caixa de mensagem exibe os valores inseridos.

ADVERTISEMENT

Erros Comuns ao Criar Caixas de Diálogo Personalizadas

O UserForm Não Aparece Quando Executo a Macro

A causa mais comum é que o nome do UserForm no método Show não corresponde ao nome real da propriedade Name do formulário. Verifique a propriedade Name na janela Propriedades. Se você renomeou para frmDocumentSetup, certifique-se de que sua macro usa exatamente esse nome. Confirme também que a macro está no mesmo projeto que o UserForm.

A ComboBox Está Vazia Quando o Formulário Abre

Os itens da ComboBox devem ser adicionados no evento UserForm_Initialize. Se você adicionou os itens em um evento diferente ou no código do módulo, eles não aparecerão. Abra a janela de código do UserForm e verifique se o evento Initialize contém as linhas AddItem. Certifique-se de que o nome da ComboBox no código corresponde ao nome real do controle.

O Formulário Fecha Mas os Valores São Perdidos

Quando você usa Me.Hide, o formulário é ocultado, mas não descarregado. Os valores dos controles permanecem acessíveis enquanto o formulário não for descarregado. Se você usar Unload Me em vez de Me.Hide, o formulário e seus valores são destruídos. Use Me.Hide no botão OK e chame Unload Me apenas no botão Cancelar se você não precisar dos valores. Alternativamente, declare variáveis públicas no módulo e atribua os valores dos controles a elas antes de ocultar o formulário.

Controles Sobrepõem ou Estão Desalinhados

No Editor VBA, use o menu Formatar para alinhar controles. Selecione vários controles segurando Ctrl enquanto clica em cada um. Em seguida, escolha Formatar > Alinhar > Esquerdas para alinhá-los verticalmente. Use Formatar > Espaçamento Horizontal > Tornar Igual para distribuir os controles uniformemente. Defina a propriedade TabIndex de cada controle para definir a ordem em que os usuários navegam pelos campos ao pressionar Tab.

UserForm VBA vs InputBox: Qual Usar

Item UserForm InputBox
Número de entradas Ilimitado Uma por chamada
Tipos de controle Caixa de texto, caixa de combinação, caixa de seleção, botão de opção, caixa de listagem Apenas entrada de texto
Validação Código VBA personalizado em eventos de clique de botão Nenhum embutido
Design visual Totalmente personalizável: tamanho, cor, fonte, layout Aparência fixa, sem personalização
Complexidade do código Moderada — requer design do formulário e manipuladores de eventos Mínima — única chamada de função
Melhor caso de uso Múltiplas entradas relacionadas ou entrada de dados complexa Solicitações rápidas de valor único

Agora você pode criar uma caixa de diálogo personalizada no Word usando UserForms VBA. Comece projetando um formulário com os controles necessários, escreva o evento Initialize para preencher listas e adicione manipuladores de botão para recuperar a entrada do usuário. Para uso avançado, adicione validação que verifica se campos obrigatórios estão vazios antes de ocultar o formulário. Use a propriedade Tag dos controles para armazenar metadados que sua macro lê posteriormente.

ADVERTISEMENT