VBA ComboBox

Excel VBA ComboBox

ComboBox é o recurso de formulário do usuário no VBA , eles são diferentes das caixas de texto, pois as caixas de texto são usadas para conter apenas texto e permitimos que o usuário insira qualquer tipo de dados, mas usando caixas de combinação limitamos o usuário para o tipo de resposta que desejamos portanto, os dados estão em ordem, é semelhante à validação de dados de lista no Excel.

ComboBox pode ser comparado a uma lista suspensa no Excel, em planilhas usamos validação de dados para fornecer uma lista suspensa, mas no VBA há um recurso de formulário de usuário onde é usado para fornecer uma lista suspensa em qualquer formulário de usuário, mas se quisermos usar uma caixa de combinação no Excel, também podemos acessá-la na seção de desenvolvedor de lá, podemos criar caixas de combinação para células individuais ou múltiplas.

O Combo Box é muito semelhante à lista suspensa que temos em uma planilha excel, com o combo box podemos armazenar valores pré-determinados, para que o usuário faça a seleção na lista disponível no combo box. A caixa de combinação geralmente é usada junto com os formulários do usuário como parte da obtenção de informações dos usuários.

Os formulários do usuário são úteis, mas ter outras ferramentas no formulário do usuário é o que o torna tão especial. Uma das ferramentas que costumamos usar como ferramenta para o formulário do usuário é o “ComboBox”.

2 maneiras principais de criar uma ComboBox VBA

Você pode baixar este modelo do Excel VBA Combo Box aqui - Modelo Excel do VBA Combo Box

# 1 - Usando a codificação direta

Primeiro, veremos como usar a caixa de combinação com a planilha. Abra qualquer uma das planilhas da pasta de trabalho do excel, vá até a aba Desenvolvedor e nesta aba temos uma ferramenta chamada “Inserir”. Clique aqui e, abaixo disso, temos duas opções Active X Controls & Form Controls no Excel.

Em “Active X Controls”, escolha “Combo Box”.

Agora você pode desenhar este objeto em qualquer uma das planilhas.

Clique com o botão direito na caixa de combinação e escolha a opção “Propriedades”.

Quando você escolhe propriedades, ele abre uma lista enorme de propriedades de uma caixa de combinação.

Para esta caixa de combinação, vamos dar uma lista de nomes de departamentos, então altere a propriedade do nome da caixa de combinação para  “DeptComboBox” .

Agora, esta caixa de combinação será chamada de “DeptComboBox” . Precisamos fornecer nomes de departamentos pré-determinados, então aqui eu tenho uma lista de nomes de departamentos.

Agora precisamos adicionar esses valores à lista da caixa de combinação, podemos fazer isso de duas maneiras, por meio de codificação ou por meio do gerenciador de nomes.

Clique duas vezes no Combobox e você será levado ao procedimento de macro VBA.

Mas precisamos ver os nomes desses departamentos quando a pasta de trabalho for aberta, então clique duas vezes em “ThisWorkbook”.

Na lista suspensa, escolha “Pasta de trabalho”.

Nas opções, escolha “Abrir”.

Agora ele criará um espaço em branco como o abaixo.

Dentro desta macro, insira o código abaixo.

Código:

 Private Sub Workbook_Open () With Worksheets ("Sheet1"). DeptComboBox .AddItem "Finance" .AddItem "Marketing" .AddItem "Merchandising" .AddItem "Operações" .AddItem "Auditoria" .AddItem "Atendimento ao cliente" End With End Sub 

Ok, agora salve e feche a pasta de trabalho, quando você reabrir a pasta de trabalho poderemos ver os nomes dos departamentos nela.

# 2 - Usando UserForm

Outra forma de adicionar valores ao ComboBox é usando o formulário do usuário. Primeiro, dê um nome às células como “Departamento”.

Vá para o Editor do Visual Basic e insira o Formulário do Usuário na opção INSERIR.

Agora o novo formulário do usuário foi criado.

Ao lado do formulário do usuário, podemos ver “Caixa de ferramentas” desta caixa de ferramentas podemos inserir “Caixa de combinação”.

Agora a caixa de combinação está incorporada ao formulário do usuário, neste método para abrir a opção de propriedades selecione a caixa de combinação e pressione a tecla F4 para abrir a janela de propriedades.

Role para baixo na guia de propriedades e escolha “Origem da linha”.

Para esta “Origem da linha”, insira o nome que demos às células do nome do departamento.

Agora, esta caixa de combinação contém a referência do nome “Departamento” .

Agora execute o formulário do usuário usando o botão Executar.

Agora podemos ver uma lista de nomes de departamentos na caixa de combinação do formulário do usuário.

Praticamente formulário de usuário associado a uma caixa de combinação, caixa de texto e muitas outras ferramentas. Criaremos um formulário de usuário simples para entrada de dados com uma caixa de texto e uma caixa de combinação.

Crie um formulário de usuário como o abaixo.

Crie dois botões de comando.

Clique duas vezes no botão “ENVIAR” para abrir abaixo da macro.

Dentro desta macro, adicione o código abaixo.

Código:

 Private Sub CommandButton1_Click() Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(LR, 1).Value = TextBox1.Value Cells(LR, 2).Value = ComboBox1.Value End Sub 

Now double click on the “CANCEL” button and add the below code.

Now in the worksheet create a template like the below.

Now run the user form and it will open up like this.

Enter the employee name and pick the department name from the combo list.

Click on the SUBMIT button and see the magic.

We got the values entered in the table format we have created.

Things to Remember

  • COMBO BOX has its own properties as well.
  • Adding values to list comes in two ways one is a coding way and another one is range name reference.
  • COMBO BOX is usually part of the user form.