Notifications
Clear all

ComboBox Formulario

4 Posts
4 Usuários
0 Reactions
1,267 Visualizações
(@frenetico)
Posts: 0
New Member
Topic starter
 

Pessoal,

Tenho uma ComboBox em um formulario e necessito que ela puxe uma lista pre-definida que esta na aba VISOR da celula T1 até T50

Para colocar todos os itens pelo ADD ITEM ficaria muito grande .

Como faço para o ComboBox reconhecer essa listagem?

 
Postado : 23/03/2016 7:18 pm
(@fcarlosc)
Posts: 0
New Member
 

Olá amigo, posta o arquivo para que alguém possa ajudá-lo.

 
Postado : 23/03/2016 8:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Existem alguams formas de fazer, vou indicar 3:
1) Selecione o combobox, e encontre a propriedade RowSource, ali, coloque o endereço do intervalo, assim por exemplo:

plan1!e2:e10

2) Crie um nome *(usando Ctrl+F3), que pode ser fixo *(como o endereço acima) ou dinâmico, usando DESLOC() por exemplo, e daí, no mesmo RowSource, coloque o nome criado

Lista

http://www.planilhando.com.br/forum/viewtopic.php?f=20&t=98#p250

3) Se vc preferir fazer via código, tudo bem, não precisa escrever 50 linhas, use um loop, um laço For, uma estrtura de repetição, algo assim:
dim i as long

for i = 1 to 50
     Userform1.Combobo1.AddItem Worksheets("Nome Da Sua Planilha").Range("F" & i).value
next i

Qquer dúvida dê um grito !

Abs,

 
Postado : 23/03/2016 9:13 pm
 RMC
(@rmc)
Posts: 0
New Member
 

Boa tarde!
uma outra forma de fazer é criar um novo para o intervalo e dentro de onde ele se refere-se usar a função desloc e cont.valores
eu uso o excel 2010

1) ir na Aba Formulas e clique em Gerenciador de nomes
2) clique em novo ..
3) no nome você coloca um nome algo qual seja facil de lembrar e que se refira ao conteúdo, exemplo: _INTERVALO_LISTA
4) mude o REFERE-SE A: para =DESLOC(Plan1!$B$2;0;0;CONT.VALORES(Plan1!$B:$B)-1;1)
5) clique em OK
6) você definiu o nome e de forma dinâmica ou seja [se for incluido e retirado itens da lista so exibirá o conteúdo da lista que o nome estiver selecionado no exemplo acima é a coluna toda a B]

AGORA PRECISAMOS CHAMAR ISSO DENTRO QUANDO O USERFORM FOR ABERTO, PARA QUE A COMBOBOX SEJA CARREGADO ASSIM QUE O FORMULÁRIO FOR ABERTO UTILIZE O ENVENTO [INITIALIZE], DESSA FORMA IRÁ FICA ASSIM:

Private Sub UserForm_Initialize()
ComboBox1.List = Application.Transpose(Range("_INTERVALO_LISTA")) 'Onde está escrito combobox1 mude para o nome de sua ComboBox e o nome caso você tenha criado um nome diferente substitua o _INTERVALO_LISTA pelo nome ao qual foi criado.
End Sub

[Sobre como usar e porque foi usado o desloc no nome]
NOTA: A fórmula DESLOC se desloca ou seja se posiciona de acordo com a planilha e/ou tabela no exemplo acima citado a planilha esta com o nome de Plan1, porque escolher o B2? Resposta é porque nessa planilha o conteúdo se inicia na B2 pois possui um cabeçalho, o primeiro zero após o ponto e virgula determina o número de linhas e o segundo zero após a outra ponto e virgula determina a quantidade de colunas, em seguida foi usado a formula CONT.VALORES para contar o total de linhas usadas na coluna B por isso a sintase da fórmula ficou CONT.VALORES(PRODUTOS!$B:$B)-1, mas e o menos 1? O -1 é para descontar a linha do cabeçalho para não contar ela, depois do ponto e vírgula 1 mas porque 1? O 1 se refere a coluna, como a referência nosso de deslocamento possui apenas 1 coluna de comparação então é deve ser informado o número 1, caso o deslocamento fosse de mais de uma coluna o número deve ser igual a quantidade de colunas totais selecionadas.

Lembrando que essa opção fernando.fernandes já havia citado porém só estou aqui a detalhar de um jeito mais simples e passo a passo.

segue EXEMPLO em arquivo

 
Postado : 28/04/2016 1:51 pm