/ / Caixa de combinação do Excel VBA Multicolumn

Caixa de combinação do Excel VBA Multicolumn

Abaixo, vamos olhar para um programa em Excel VBA que cria um Userform que contém um caixa de combinação de várias colunas.

A forma de usuário que vamos criar é a seguinte:

Caixa de combinação de colunas múltiplas 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, a caixa de combinação e os botões 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 combinação clicando em ComboBox na caixa de ferramentas. Em seguida, você pode arrastar uma caixa de combinaçã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 dos botões Userform, label e command, clique em View, Properties Window 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 vamos criar o Sub UserForm_Initialize. Quando você usa o método Show para o Userform, este sub será automaticamente executado.

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 as seguintes linhas de código:

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

Explicação: A primeira linha de código define o número de colunas da caixa de combinação como 2. Em vez de definir o número de colunas no tempo de execução, você também pode definir essa configuração em tempo de design. Para isso, clique com o botão direito do mouse no controle da caixa de combinação, clique em Propriedades e defina a propriedade ColumnCount como 2. Em seguida, declaramos e inicializamos uma matriz bidimensional. A última linha de código atribui a matriz à caixa de combinação.

Agora criamos a primeira parte do formulário de usuário. Embora pareça arrumado, nada acontecerá quando clicarmos nos botões de comando no Userform.

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

11. Clique duas vezes no botão OK.

12. Adicione as seguintes linhas de código:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next
MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

Nota: essas linhas de código fecham a forma de usuário do Excel VBA e exibem o item e o gênero selecionados. A declaração "On Error Resume Next" ignora o erro quando o usuário preenche seu próprio filme (neste caso, não há gênero disponível).

13. Clique duas vezes no botão Cancelar.

14. Adicione a seguinte linha de código:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Resultado quando você selecionar Velocidade e clicar em OK.

Resultado da caixa de combinação multicolumn

Resultado da caixa de combinação multicolumn

Leia também: