VBA Caixa de Combinação
In this Article
Este tutorial demonstrará como trabalhar com ComboBoxes (Caixas de Combinação) no VBA.
ComboBoxes permitem que os usuários selecionem uma opção em uma lista de menu suspenso. Os ComboBoxes podem ser criados em UserForms do VBA ou com uma planilha do Excel. Neste tutorial, você aprenderá a criar e manipular ComboBoxes no VBA e em planilhas do Excel.
Se você quiser aprender a criar uma caixa de listagem, clique aqui: Caixa de listagem VBA
Se você quiser aprender a criar uma caixa de seleção, clique aqui: Caixa de seleção VBA
Criar uma Caixa de Combinação na Planilha do Excel
Para inserir uma Caixa de Combinação na planilha, você precisa ir para a guia Guia Desenvolvedor clique em Inserir e, em Controles ActiveX, escolha Caixa de Combinação:
Imagem 1. Inserir uma Caixa de Combinação na planilha
Quando você seleciona a Caixa de Combinação que inseriu, pode clicar em Propriedades na guia Desenvolvedor:
Imagem 2. Alterar propriedades da Caixa de Combinação
Aqui você pode definir diferentes propriedades do ComboBox. Para começar, alteramos o atributo Name para cmbComboBox. Agora, podemos usar o ComboBox com esse nome no código VBA.
Preencher uma ComboBox no código VBA
Primeiro, precisamos preencher o ComboBox com valores. Na maioria dos casos, um ComboBox precisa ser preenchido quando a pasta de trabalho é aberta. Por isso, precisamos colocar um código para preencher o ComboBox no objeto Workbook, procedimento Open. Esse procedimento é executado sempre que um usuário abre a pasta de trabalho. Aqui está o código:
With Planilha1.cmbComboBox
.AddItem "John"
.AddItem "Michael"
.AddItem "Jennifer"
.AddItem "Lilly"
.AddItem "Robert"
End With
Quando você clicar no menu suspenso, terá 5 nomes para escolher (John, Michael, Jennifer, Lilly e Robert):
Imagem 3. Preencher a ComboBox em VBA
Preencher um ComboBox a Partir de um Intervalo de Células
Outra maneira possível de preencher um ComboBox é permitir que o usuário o faça. Um ComboBox pode ser vinculado ao intervalo de células. Nessa abordagem, toda vez que o usuário inserir um novo valor no intervalo de células, o ComboBox será atualizado com esse valor.
Se quiser habilitar isso, você deve acessar as Propriedades do ComboBox e definir o atributo ListFillRange como o intervalo de células (no nosso caso, E2:E5):
Imagem 4. Preencher o ComboBox a partir do intervalo de células
Vinculamos nosso ComboBox ao intervalo E2:E5, onde colocamos os nomes que desejamos (Robert, Julia, George, Matthew). Como resultado, o ComboBox agora é preenchido com esses nomes:
Imagem 5. ComboBox preenchido a partir do intervalo de células
Obter um Item Selecionado de um ComboBox em VBA
A finalidade de um ComboBox é obter uma escolha do usuário. Para recuperar uma opção do usuário, é necessário usar este código:
Dim strItemSelecionado As Variant
strItemSelecionado = Planilha1.cmbComboBox.Value
A seleção do usuário está no atributo Value do objeto Planilha1.cmbComboBox. Esse valor é atribuído à variável strItemSelecionado:
Imagem 6. Obter um valor selecionado do ComboBox em VBA
Selecionamos Julia no ComboBox e executamos o procedimento. Como você pode ver na Figura 5, o valor de strSelectedItem é Julia, que é o valor que selecionamos. Agora você pode processar essa variável posteriormente no código.
Limpar uma ComboBox
Se quiser limpar uma ComboBox no VBA, você precisará usar o método Clear do objeto Planilha1.cmbComboBox. Ele excluirá todos os itens da ComboBox. Aqui está o código:
Planilha1.cmbComboBox.Clear
Observe que o método Clear não exclui o atributo ListFillRange, portanto, ele deve ser removido das propriedades do ComboBox antes.
Quando executamos o código, obtemos o ComboBox vazio:
Imagem 7. Limpar o ComboBox
Usar um ComboBox em um Formulário de Usuário
Como mencionamos, o Combobox é usado com mais frequência em formulários de usuário. Para explicar como fazer isso, primeiro vamos inserir um formulário de usuário. No editor VBA, clique com o botão direito do mouse no nome do módulo e clique em Inserir e escolha UserForm:
Imagem 8. Inserir um formulário de usuário
Para exibir os controles de inserção, é necessário ativar a Caixa de Ferramentas. Para fazer isso, clique no ícone Caixa de Ferramentas na barra de ferramentas. Depois disso, você verá as janelas com todos os controles disponíveis. Você pode clicar em Caixa de Combinação para criá-la no Userform.
Imagem 9. Inserir um ComboBox no formulário de usuário
Chamaremos o ComboBox de cmbComboBox. Para preenchê-la com valores, precisamos colocar o seguinte código no método Initialize do objeto UserForm:
Private Sub UserForm_Initialize()
With UserForm1.cmbComboBox
.AddItem "John"
.AddItem "Michael"
.AddItem "Jennifer"
.AddItem "Lilly"
.AddItem "Robert"
End With
End Sub
Esse código é acionado sempre que um usuário executa o Userform e preenche a Combobox com esses 5 nomes:
Imagem 10. A ComboBox com valores no formulário de usuário
Se você quiser obter o valor selecionado do ComboBox, precisará usar a mesma lógica para o Combobox em uma planilha, que foi explicada anteriormente no artigo.