Arquivo

Posts Tagged ‘ListBox Com VBA’

Formulário com Filtro de Palavras

 

Hoje quero mostrar um código simples, mas de muita utilidade que irá acrescentar muito em sua planilha: um filtro de palavras.

Já utilizei diversas vezes (acrescentando filtros e aumentando as opções), mas a ideia é mostrar a estrutura do código e deixar conforme a criatividade de cada um.

Encontrei este código no TomasVasquez e alterei para ficar mais simples o entendimento, espero que vocês gostem.

 

Formulário com Filtro de Palavras

filtro de palavras

Código de funcionamento

 

Private textoDigitado As String

Private Sub TextBox1_Change()
TextoDigitado = TextBox1.Text
Call PreencheLista
End Sub

Private Sub UserForm_Initialize()
'Ao iniciar o formulario ira chamar o procedimento PreencheLista
Call PreencheLista
End Sub

Private Sub PreencheLista()
TextoDigitado = TextBox1.Text
'código que irá filtrar os nomes
Dim linha As Integer
Dim TextoCelula As String
linha = 1
'limpa os dados do formulário
ListBox1.Clear
'Irá executar até o último nome
While ActiveSheet.Cells(linha, 1).Value <> Empty
'pega o nome atual
TextoCelula = ActiveSheet.Cells(linha, 1).Value
'quebra a palavra atual pela esquerda conforme a quantidade de letras digitadas e compara com o texto digitado
If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
'se a comparação for igual será adicionado no formulario
ListBox1.AddItem ActiveSheet.Cells(linha, 1)
End If
linha = linha + 1
Wend
End Sub

 

Código de funcionamento – Opção 2

(Sugestão de Ricardo Marques)

Com esta alteração de código a pesquisa não ficará limitada somente a esquerda do texto, sendo possível pesquisar a partir de toda palavra.

Para isso substitua a linha do código acima:  

“If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then”

Por

If InStr(UCase(textocelula), UCase(textodigitado)) > 0 Then

 

Vídeo Demonstrativo

Arquivo Exemplo

 

Baixar arquivo exemplo: Filtrando Palavras no Listbox

Obs.: Acessando o site do Tomas Vasquez é possível encontrar o filtro de texto aprimorado com mais colunas e etc.
Não coloquei no artigo, pois a idéia é trazer algo mais simplificado!!

ListBox Detalhes 2

 

Neste post você verá:

>> Como preencher um listbox usando VBA
>> Como ordenar um listbox
>> Como remover um item no listbox
>> Como limpar um listbox
>> Como enviar dados do listbox para o excel

 

Esse post , listbox detalhes 2, é a segunda continuação sobre o tema listbox e sobre algumas dúvidas que as pessoas tem a respeito do assunto.
Lembrando que você pode acessar o post exemplo de listbox e abaixar uma planilha modelo e retirar algumas dúvidas.

Siga o post abaixo para ver como usar listbox com VBA

.
Observação: Na imagem abaixo você pode ver como colocar borda no listbox

Observação2: Em ColumnWidths você pode alterar a largura das colunas, exemplo: “50 pt;50 pt”

formulario2

 

___________________________________________________

>> Como Preencher Um ListBox com VBA

Um detalhe sobre o código abaixo é que mostra como inserir textos em 2 colunas do listbox.
Ou seja .List(0,0)=”teste” significa que na primeira linha e primeira coluna terá o valor “teste”
Caso queira ver mais detalhes e um exemplo prático assista ao vídeo

With Me.listBox1
   .AddItem
   .List(0, 0) = "teste"
   .List(0, 1) = "teste1"
End With

_________________________________________________

Como Ordenar Um Listbox Com VBA

Tentei deixar o código abaixo o quanto mais fácil para entender, você pode ver no vídeo o seu funcionamento.

Sub Ordenar_listbox

itemFinal = listBox1.ListCount - 1

'verifica linha a linha todos os itens
For itemAtual = 0 To itemFinal - 1

'pra cada item do listbox, será verificado todos os itens novamente
For itemPosterior = itemAtual + 1 To itemFinal

'verifica se o item atual verificado é maior que seu sucessor
If listBox1.List(itemAtual) > listBox1.List(itemPosterior) Then

'passa o valor do listbox para uma variavel e assim trocar os valores do listbox
temporario = listBox1.List(itemPosterior)
listBox1.List(itemPosterior) = listBox1.List(itemAtual)
listBox1.List(itemAtual) = temporario
End If
Next itemPosterior
Next itemAtual

End sub

 

listbox_vba

_________________________________________________

Como Remover Um Item No ListBox

Para fazer a remoção de uma linha(item) no listbox, temos que pegar qual linha está selecionada e usar o RemoveIt

listBox1.RemoveItem (listBox1.ListIndex)

_________________________________________________

Como Limpar Um ListBox

Bem o comando é bem simples:

listBox1.Clear

_________________________________________________

Como Enviar Dados do Listbox Para O Excel

No exemplo abaixo estou enviando todos os itens do listbox para o Excel
Como no vídeo abaixo o nosso exemplo de listbox possui quatro colunas, estou usando: (i, 0) a (i, 3)
Inicio verificando a ultima linha usada no excel e passo todas as linhas e colunas do listbox

Sub EnviarExcel

qtdeItens = listBox1.ListCount

ultimaLInha = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For i = 0 To qtdeItens - 1
   Sheets(1).Cells(ultimaLInha + 1, 1).Value = listBox1.List(i, 0)
   Sheets(1).Cells(ultimaLInha + 1, 2).Value = listBox1.List(i, 1)
   Sheets(1).Cells(ultimaLInha + 1, 3).Value = listBox1.List(i, 2)
   Sheets(1).Cells(ultimaLInha + 1, 4).Value = listBox1.List(i, 3)

   ultimaLInha = ultimaLInha + 1
Next

End Sub

_______________________________________________

Segue vídeo demostrativo

 

 

Listbox no Vba – Detalhes 1

 

>> Como inserir cabeçalho com listbox no vba
>> Como inserir colunas no listbox
>> Como ver a quantidade de itens no listbox
>> Como saber a linha selecionada no listbox

 

Apesar de já ter um post sobre listbox no vba com exemplo vou detalhar mais sobre o assunto, pois creio que talvez não fique claro e pretendo detalhar mais sobre listbox sendo que este post esta será a primeira parte.
Na imagem abaixo demonstro onde alterar os parâmetros necessários do listbox para poder inserir o cabeçalho, o número de colunas e o preenchimento.

Mais abaixo coloco o vídeo para detalhar …

 

listbox_cabecalho

 

COMO INSERIR CABEÇALHO NO LISTBOX
Após inserir o componente de listbox deve-se clicar em cima do componente do listbox e alterar o parâmetro ColumnHeads para True. Você irá perceber que no momento da alteração o listbox irá exibir o contorno do cabeçalho.

Outro detalhe que deve ser visto é o preenchimento dos dados do listbox, conforme na imagem no rowsource eu coloquei os dados sem o cabeçalho.

_____________________________________________________

COMO INSERIR COLUNAS NO LISTBOX
Deve-se clicar em cima do componente do listbox e no parametro ColumnCount inserir o número de colunas necessárias.

_____________________________________________________

COMO VER A QUANTIDADE DE ITENS NO LISTBOX
Para ver a quantidade de itens basta inserir o comando: “nome do listbox”.”ListCount”

Exemplo:
numItens = ListBox1.ListCount

____________________________________________________

COMO SABER A LINHA SELECIONADA NO LISTBOX
Para ver a linha selecionada basta usar o comando:: “nome do listbox”.”ListIndex”

Exemplo:
linhaSelecionada  = ListBox1.ListIndex

 

__________________________________________

Segue vídeo demonstrativo

 

Para ajudar ainda mais segue modelo para download gratuitamente.

download planilha excel vba

Exemplo: Preenchendo – ListBox Vba

 

Preenchendo listbox com rowsource

Coloco abaixo duas maneiras, uma delas demonstro como fazer o preenchimento através do próprio vba e a outra maneira através da propriedade do listbox vba no formulário.

Modo 1 – pelo VBA:

Sei que existe várias maneiras de preencher um listbox, mas coloco aqui um código que gostei pela forma simples e idéias agregadas que achei em pesquisas.

Abaixo segue link para download da planilha com código

Modo 2 – pela propriedade:

Agora se você não gosta de programação vba e deseja um preenchimento mais dinâmico do listbox, aconselho então à adicionar a propriedade no próprio listbox do formulário:

ListBox Vba

 

Até a próxima

 

Segue ajudar ainda mais segue link para duas planilhas de listbox que estão compactadas:

Download Exemplo Preenchendo Listbox Vba