/ / Loop através de controles no Excel VBA

Loop através de controles no Excel VBA

Com apenas algumas linhas de código, podemos facilmente loop através de controles em um Excel UserManager VBA. A forma de usuário que vamos criar é a seguinte:

Loop através de controles no Excel VBA

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

1. Abra o Editor do Visual Basic. Se o Explorador de Projetos não estiver visível, clique em Visualizar, Explorador de Projetos.

2. Clique em Inserir, Userform. Se a caixa de ferramentas não aparecer automaticamente, clique em Exibir, Caixa de ferramentas. Sua tela deve ser configurada como abaixo.

Configuração da Tela Userform no Excel VBA

3 Adicione o rótulo, caixas de seleção (primeiro no topo, o segundo abaixo do primeiro e assim por diante) e o botão de comando. Depois que isso for concluído, o resultado deve ser consistente com a imagem da forma de usuário mostrada anteriormente. Por exemplo, crie um controle de caixa de seleção clicando em CheckBox na caixa de ferramentas. Em seguida, você pode arrastar uma caixa de seleção no Userform.

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

5. Para mostrar a forma 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 criamos a primeira parte do formulário de usuário. Embora pareça arrumado, nada acontecerá quando clicarmos no botão Limpar.

6. Abra o Editor do Visual Basic.

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

8. Clique duas vezes no botão Limpar.

9. Adicione as seguintes linhas de código:

Private Sub CommandButton1_Click()

Dim contr As control

For Each contr In UserForm1.Controls
    If TypeName(contr) = "CheckBox" Then
        contr.Value = False
    End If
Next

End Sub

Explicação: O Excel VBA percorre todos os controles no Userform. A função TypeName é usada para filtrar os controles da caixa de seleção. Se um controle de caixa de seleção, o Excel VBA desmarca a caixa de seleção. contr é escolhido aleatoriamente aqui, você pode usar qualquer nome. Lembre-se de se referir a este nome no resto do seu código.

Resultado quando você clica no botão Limpar:

Loop através do resultado dos controles

Leia também: