Formulário de usuário interativo do Excel VBA - Macros fáceis do Excel

Índice

Abaixo, veremos um programa em Excel VBA que cria um Userform interativo. O formulário de usuário que vamos criar tem a seguinte aparência:

Explicação: sempre que você insere um valor na caixa de texto ID, o Excel VBA carrega o registro correspondente. Quando você clica no botão Editar / Adicionar, o Excel VBA edita o registro na planilha ou adiciona o registro quando o ID ainda não existe. O botão Limpar limpa todas as caixas de texto. O botão Fechar fecha o formulário do usuário.

Para criar este formulário de usuário, execute as seguintes etapas.

1. Abra o Editor do Visual Basic. Se o Project Explorer não estiver visível, clique em View, Project Explorer.

2. Clique em Inserir, Formulário do usuário. Se a caixa de ferramentas não aparecer automaticamente, clique em Exibir, Caixa de ferramentas. Sua tela deve ser configurada conforme abaixo.

3. Adicione os rótulos, caixas de texto (primeiro na parte superior, a segunda abaixo da primeira e assim por diante) e botões de comando. Depois de concluído, o resultado deve ser consistente com a imagem do formulário do usuário mostrada anteriormente. Por exemplo, crie um controle de caixa de texto clicando em TextBox na caixa de ferramentas. Em seguida, você pode arrastar uma caixa de texto no formulário do usuário.

4. Você pode alterar os nomes e as legendas dos controles. Os nomes são usados ​​no código VBA do Excel. As legendas são aquelas que aparecem na tela. É uma boa prática alterar os nomes dos controles, mas não é necessário aqui porque temos apenas alguns controles neste exemplo. Para alterar a legenda dos rótulos, caixas de texto e botões de comando, clique em Exibir, Janela de Propriedades e clique em cada controle.

5. Para mostrar o formulário de usuário, coloque um botão de comando em sua planilha e adicione a seguinte linha de código:

Private Sub CommandButton1_Click ()
UserForm1.Show
End Sub

Agora vamos criar o Sub UserForm_Initialize. Quando você usa o método Show para o formulário do usuário, este sub será executado automaticamente.

6. Abra o Editor do Visual Basic.

7. No Project Explorer, clique com o botão direito do mouse em UserForm1 e clique em View Code.

8. Escolha Userform na lista suspensa à esquerda. Escolha Inicializar na lista suspensa à direita.

9. Adicione a seguinte linha de código:

Sub UserForm_Initialize privado ()
TextBox1.SetFocus
End Sub

Explicação: esta linha de código define o foco na primeira caixa de texto, pois é aqui que queremos começar quando o formulário do usuário for carregado.

Agora criamos a primeira parte do formulário de usuário. Embora já pareça legal, nada acontecerá ainda quando inserirmos um valor na caixa de texto ID ou quando clicarmos em um dos botões de comando.

10. No Project Explorer, clique com o botão direito do mouse em UserForm1 e clique em View Code.

11. Escolha TextBox1 na lista suspensa à esquerda. Escolha Alterar na lista suspensa à direita.

12. Adicione a seguinte linha de código:

Private Sub TextBox1_Change ()
Obter dados
End Sub

13. No Project Explorer, clique duas vezes em UserForm1.

14. Clique duas vezes no botão de comando Editar / Adicionar.

15. Adicione a seguinte linha de código:

Private Sub CommandButton1_Click ()
EditAdd
End Sub

16. Clique duas vezes no botão de comando Limpar.

17. Adicione a seguinte linha de código:

Private Sub CommandButton2_Click ()
Forma limpa
End Sub

Explicação: esses subs chamam outros subs que iremos criar em um segundo.

18. Clique duas vezes no botão de comando Fechar.

19. Adicione a seguinte linha de código:

Private Sub CommandButton3_Click ()
Descarregue-me
End Sub

Explicação: esta linha de código fecha o formulário do usuário.

É hora de criar os subs. Você pode ler nosso capítulo Função e Sub para aprender mais sobre sub. Se você estiver com pressa, simplesmente coloque os seguintes subs em um módulo (No Editor do Visual Basic, clique em Inserir, Módulo).

20. Primeiro, declare três variáveis ​​do tipo Integer e uma variável do tipo Boolean. Declare as variáveis ​​na seção Declaração geral (na parte superior do módulo). Dessa forma, você só precisa declarar as variáveis ​​uma vez e pode usá-las em vários subs.

Dim id As Integer, i As Integer, j As Integer, sinalizador As Boolean

21. Adicione o sub GetData.

Sub GetData ()
If IsNumeric (UserForm1.TextBox1.Value) Then
flag = False
i = 0
id = UserForm1.TextBox1.Value
Células Do While (i + 1, 1) .Value ""
If Cells (i + 1, 1) .Value = id Then
flag = True
Para j = 2 a 3
UserForm1.Controls ("TextBox" & j) .Value = Cells (i + 1, j) .Value
Próximo j
Fim se
i = i + 1
Ciclo
If flag = False Then
Para j = 2 a 3
UserForm1.Controls ("TextBox" & j) .Value = ""
Próximo j
Fim se
Outro
Forma limpa
Fim se
End Sub

Explicação: Se a caixa de texto do ID contiver um valor numérico, o Excel VBA procura o ID e carrega o registro correspondente. Usamos a Coleção de controles para percorrer facilmente as caixas de texto. Se o Excel VBA não conseguir encontrar o ID (o sinalizador ainda é False), ele esvazia a segunda e a terceira caixa de texto. Se a caixa de texto ID não contiver um valor numérico, o Excel VBA chama o submarino ClearForm.

22. Adicione o submarino ClearForm.

Sub ClearForm ()
Para j = 1 a 3
UserForm1.Controls ("TextBox" & j) .Value = ""
Próximo j
End Sub

Explicação: O Excel VBA limpa todas as caixas de texto.

23. Adicione o sub EditAdd.

Sub EditAdd ()
Dim emptyRow As Long
Se UserForm1.TextBox1.Value "" Então
flag = False
i = 0
id = UserForm1.TextBox1.Value
emptyRow = WorksheetFunction.CountA (Range ("A: A")) + 1
Células Do While (i + 1, 1) .Value ""
If Cells (i + 1, 1) .Value = id Then
flag = True
Para j = 2 a 3
Células (i + 1, j) .Value = UserForm1.Controls ("TextBox" & j) .Value
Próximo j
Fim se
i = i + 1
Ciclo
Se flag = False Then
Para j = 1 a 3
Células (emptyRow, j) .Value = UserForm1.Controls ("TextBox" & j) .Value
Próximo j
Fim se
Fim se
End Sub

Explicação: Se a caixa de texto ID não estiver vazia, o Excel VBA edita o registro na planilha (o oposto de carregar um registro como vimos anteriormente). Se o Excel VBA não conseguir encontrar o ID (o sinalizador ainda é False), ele adiciona o registro à próxima linha vazia. A variável emptyRow é a primeira linha vazia e aumenta sempre que um registro é adicionado.

24. Saia do Editor do Visual Basic, insira os rótulos mostrados abaixo na linha 1 e teste o formulário do usuário.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave