Sabemos como criar uma lista suspensa em cascata em uma planilha usando validação de dados. Mas como criamos uma lista suspensa de combobox em cascata no formulário de usuário do VBA. Esta é uma das necessidades básicas.
Neste artigo, aprenderemos como criar uma combobox dependente no VBA.
Lógica para combobox dependente em VBA
Para criar uma combobox dependente em VBA, precisamos inicializar a combobox no evento do elemento de origem. Por exemplo, se uma combobox depende de um grupo de botões de opção, o código para carregar a combobox dependente deve ser executado imediatamente após alguém selecionar um botão de opção. Ou se uma caixa de combinação depende de outra caixa de combinação, dependendo da caixa de combinação deve carregar toda vez que o valor na caixa de combinação for alterado.
Chega de teoria. Vamos pular para um exemplo para ver como funciona.
ComboBox dependendo de outro Combobox
Crie duas caixas de combinação. Primeiro, deve-se listar alguns nomes de países. O outro deve listar os nomes dos estados do país selecionado. Se o usuário alterar o país na primeira caixa de combinação, a lista da segunda caixa de combinação deve ser alterada.
Vamos criar um formulário que tenha duas caixas de combinação com rótulos de países e estados e um botão de comando para enviar a entrada.
A primeira caixa de combinação deve listar os nomes dos países e não depende de nenhum valor. Então, vamos carregá-lo no evento form_intialize como fazemos para a inicialização básica do combobox.
Clique duas vezes no formulário do usuário. Isso abrirá a área de codificação no objeto UserForm. Agora, no menu suspenso à esquerda, selecione o formulário do usuário. Em seguida, no menu suspenso à direita, selecione inicializar.
Um subnome vazio UserForm_Initialize () será inserido. Qualquer coisa escrita neste sub será executado antes que o formulário do usuário apareça.
Então, escrevemos o código de inicialização para combobox aqui.
Private Sub UserForm_Initialize () countries = Array ("Índia", "Nepal", "Butão", "Shree Lanka") UserForm1.ComboBox1.List = states End Sub
Temos nosso primeiro combobox inicializado. Sempre que for carregar o formulário do usuário, o primeiro combox estará pronto com o nome dos países.
Agora, para carregar a segunda caixa de combinação, precisamos verificar qual valor está selecionado na primeira caixa de combinação 1 e executar o código toda vez que a caixa de combinação 1 alterar seus valores. Para isso, usaremos o evento Combobox_AfterUpdate.
No menu suspenso à esquerda, selecione combobox1. No menu suspenso à direita, selecione AfterUpdate. Também podemos usar o evento Change, mas nos limitaremos a AfterUpdate no artigo.
Agora escreva o código abaixo:
Sub ComboBox1_AfterUpdate () Select Case ComboBox1.Value Case "India": states = Array ("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": states = Array ("Arun Kshetra "," Janakpur Kshetra "," Kathmandu Kshetra ", _" Gandak Kshetra "," Kapilavastu Kshetra ") Caso" Butão ": estados = Array (" Bumthang "," Trongsa "," Punakha "," Thimphu "," Paro ") Case" Shree Lanka ": states = Array (" Galle "," Ratnapura "," Colombo "," Badulla "," Jaffna ") End Select ComboBox2.List = states End Sub
Aqui, usamos uma instrução select case. A instrução select case é boa quando queremos ver qual valor é escolhido entre muitos valores. Eu expliquei aqui em detalhes.
Para armazenar o valor inserido pelo usuário use o botão enviar. Escreva o código abaixo no botão de comando enviar para salvar o país e o estado selecionados pelo usuário na planilha.
Private Sub CommandButton1_Click () country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets ("sheet1"). Range ("G1") = país ThisWorkbook.Worksheets ("sheet1"). Range ("H1") = State Unload Me End Sub
Agora para mostrar o formulário do usuário, insira um botão na planilha e escreva o código abaixo. Ou você pode usar um módulo simples para mostrar o formulário do usuário.
Sub load_userform () UserForm1.Show End Sub
Agora execute o código load_userform.
Como funciona?
Quando você executa o sub que possui o código userform.show, o VBA executa eventos userform_initialize imediatamente após executar o comando userform.show. No evento userform_intialize, inicializamos a primeira combobox que possui uma lista de países. Em seguida, o formulário é mostrado ao usuário.
Agora, quando o usuário seleciona qualquer valor da primeira combobox, o evento combobox1_AfterUpdate é executado. Este evento contém o código para verificar qual valor é selecionado pelo usuário em combobox1 e com base nesse valor, ele define a matriz de estados e inicializa os valores de combobox2 com a matriz de estados.
Então sim pessoal, é assim que você cria uma caixa de combinação em cascata na forma de usuário do VBA. Espero ter sido suficientemente explicativo e o artigo servido ao seu propósito. Se você tiver alguma dúvida sobre este artigo ou qualquer tópico do VBA, pergunte-me na seção de comentários abaixo.
Introdução aos Formulários de Usuário do Excel VBA| Explicarei como criar um formulário no Excel, como usar a caixa de ferramentas VBA, como lidar com as entradas do usuário e, finalmente, como armazenar as entradas do usuário. Percorreremos esses tópicos usando um exemplo e um guia passo a passo.
Variáveis VBA no Excel| VBA significa Visual Basic for Applications. É uma linguagem de programação da Microsoft. É usado com aplicativos do Microsoft Office, como MSExcel, MS-Word e MS-Access, enquanto as variáveis VBA são palavras-chave específicas.
Escopo de Variável Excel VBA| Em todas as linguagens de programação, temos especificadores de acesso à variável que definem de onde uma variável definida pode ser acessada. O Excel VBA não é exceção. O VBA também tem especificadores de escopo.
Argumentos ByRef e ByVal | Quando um argumento é passado como um argumento ByRef para uma subfunção ou função diferente, a referência da variável real é enviada. Quaisquer alterações feitas na cópia da variável, serão refletidas no argumento original.
Exclua planilhas sem prompts de confirmação usando VBA no Microsoft Excel | Como está excluindo planilhas usando o VBA, você sabe o que está fazendo. Você gostaria de dizer ao Excel para não mostrar este aviso e excluir a maldita planilha.
Adicionar e salvar uma nova pasta de trabalho usando VBA no Microsoft Excel 2016| Neste código, primeiro criamos uma referência a um objeto de pasta de trabalho. E então o inicializamos com um novo objeto de pasta de trabalho. A vantagem dessa abordagem é que você pode realizar operações nesta nova pasta de trabalho facilmente. Como salvar, fechar, excluir, etc.
Exibir uma mensagem na barra de status do Excel VBA| A barra de status no Excel pode ser usada como um monitor de código. Quando seu código VBA é longo e você executa várias tarefas usando o VBA, geralmente desativa a atualização da tela para não ver a tela piscando.
Desativar mensagens de aviso usando VBA no Microsoft Excel 2016| Este código não apenas desabilita alertas VBA, mas também aumenta a eficiência de tempo do código. Vamos ver como.
Artigos populares:
50 atalhos do Excel para aumentar sua produtividade | Torne sua tarefa mais rápida. Esses 50 atalhos farão você trabalhar ainda mais rápido no Excel.
A função VLOOKUP no Excel | Esta é uma das funções mais usadas e populares do Excel, que é usada para pesquisar valores em diferentes intervalos e planilhas.
CONT.SE no Excel 2016 | Conte valores com condições usando esta função incrível. Você não precisa filtrar seus dados para contar valores específicos. A função Countif é essencial para preparar seu painel.
Como usar a função SUMIF no Excel | Esta é outra função essencial do painel. Isso ajuda você a somar valores em condições específicas.