Botões de comando a...
 
Notifications
Clear all

Botões de comando acionando ComboBox

9 Posts
1 Usuários
0 Reactions
2,511 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal. Em um arquivo Excel, pretendo fazer uma plan criando um formulário que contenha uma ComboBox para seleção de fornecedores. Como são muitos, gostaria de inserir botões de comando nesse form contendo todas as letras do alfabeto. Deste modo, quando se acionasse o botão de comando referente à letra “A”, por exemplo, apareceriam apenas os fornecedores iniciados por esta letra no ComboBox acima. Como se faz algo assim ? Agradeço a ajuda. :)

 
Postado : 15/07/2011 8:36 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Exemplo no anexo:

 
Postado : 15/07/2011 2:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson, perfect ! Exatamente isso. Muito obrigado. Abraços. :mrgreen:

 
Postado : 15/07/2011 3:16 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá a todos!

Olá Edson!

Pode esplicar esse codigo?

Sub Adicionar(pri)

ComboBox1.Clear

lin = 1

Do While Sheets("Plan1").Cells(lin, 1) <> ""
If Mid(Sheets("Plan1").Cells(lin, 1), 1, 1) <> pri Then
lin = lin + 1
Else
ComboBox1.AddItem Sheets("Plan1").Cells(lin, 1)
lin = lin + 1
End If
Loop

End Sub

VLW!!!

 
Postado : 18/07/2011 5:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Com a sua permissão Edson :
Anderson em um outro Tópico, você me disse :
Cara preciso aprender ingles...
Leio um pouco devido ao meu trabalho, mas é tecnico, porem especifico...

Então, você não precisa ser expert no Idioma, sabendo as palavras CHAVES, já é mais de meio caminho andado para se entender determinadas rotinas, por exemplo :

Primeiro Passo, procurar na ajuda do VBA e do Excel informações sobre as Funções :

Função MID
Em VBA a Função Mid equivale a Função EXT.TEXTO :
Retorna uma Variant (String) que contém um número especificado de caracteres de uma seqüência de caracteres.
Sintaxe
Mid(string, start[, length])

Função EXT.TEXTO
EXT.TEXTO retorna um número específico de caracteres da seqüência de caracteres texto, começando na posição especificada, com base no número de caracteres especificado
Sintaxe
EXT.TEXTO(texto;núm_inicial;núm_caract)
Exemplo :
=EXT.TEXTO("DOMINIQUE"; 1; 1) Retorna "D"
=EXT.TEXTO("DOMINIQUE"; 1; 2) Retorna "DO"

2 °) Passo, INTERPRETAR A ROTINA

Private Sub cbtA_Click()
pri = cbtA.Caption - Armazenamos na Variável pri a Letra do Botão Clicado
Call Adicionar(pri) - Chamamos a Rotina Adicionar
End Sub

Sub Adicionar(pri) - (Entre parentes o Valor da Variável armazenada)

ComboBox1.Clear (Limpar o ComboBox1)

lin = 1 (Variavel para a Linha - Iniciando na Linha 1)

Do While Sheets("Plan1").Cells(lin, 1) <> ""
Fazer Enquanto Sheets("Plan1").Celula(Linha, Coluna) for Diferente de Vazio)

If Mid(Sheets("Plan1").Cells(lin, 1), 1, 1) <> pri Then
Se a Primeira Letra da Celula(Linha, Coluna) for Diferente da que está na Variável pri Então
Não Fazemos nada, e :
lin = lin + 1 (Incrementamos a Variável Linha com + 1 - Proxima Linha)

Else (Se Não ...)
ou seja a Primeira Letra da Celula(Linha, Coluna) é IGUAL a que está na Variável pri
ComboBox1.AddItem Sheets("Plan1").Cells(lin, 1)
Adicionamos no ComboBox1 o Conteúdo que se encontra na Celula(Linha, Coluna) correspondente
lin = lin + 1 (Incrementamos a Variável Linha com + 1 - Proxima Linha)
End If
Loop (Laço, Retorno ao inicio)

End Sub

Espero que não me entenda errado, é só mais uma dica, pois, se nos acostumarmos a Interpretar as Rotinas da forma citada acima, verá que tudo fica mais fácil, lógico que existem outras mais complexas, mas com o tempo nos ajustamos.

abraços

 
Postado : 18/07/2011 7:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

VLW!

E de forma nenhuma poderia te levar a mal.

Tenho aprendido muito com vcs.

Até procurei na ajuda do excel mas não entendi muito bem.

Tenho andado cançado pacas e minha mente ta dando but(sei que isso não é desculpa, apenas um fato)

Imagina que confundi Cell(lin,1) Com OffSet :(

E a função MID deu um nó que me perdi...

Agora ta claro.

Muito obrigado.

As vezes perco um pouco o foco e não consigo ver oque ta na minha frente.

Brigadão mesmo!!! :D :D :D

 
Postado : 18/07/2011 7:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Mauro

Nossa, que aula heim..
Nunca encontrei algo em VBA tão detalhado assim.
Gostei, espero ver mais aulas dessas...
Parabéns!

Um abraço.

 
Postado : 18/07/2011 11:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 


Mauro...
"permissão" sempre!

Estou com o Patropi...!

Verdadeira aula...

8-)

 
Postado : 18/07/2011 12:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Perfeito ! Resolvi meu problema e, de quebra, ganhei uma aula de alto nível. Obrigado !!! :mrgreen:

 
Postado : 19/07/2011 12:53 pm