Usuário com melhor resposta
selecionar linha na planilha pela lisbox

Pergunta
-
Alexandre,
pelo q vi no fórum, vc me parece, a principio ser o "cara" q conseguirá me ajudar, entretando, claro!, conto com a ajuda de todos, afinal, quando não se sabe aquele q souber um pouco mais já saberá muito... assim:
(1) Tenho uma planilha excel com 4 colunas e criei no vb(alt f11) uma formulário (userform), e, nesta userform eu tenho dois objetos (text e uma listbox), preciso que ao carregar o formulário (userform) todo o conteudo dessa planilha, a partir da linha 7 sejam carregados na listbox (colunas e linhas).
(2) Dados carregados na listbox, preciso que, ao começar a digitar na text (on change) da caixa de texto que a listbox começe ao "filtrar" os nomes pelo que está sendo digido na text (caixa de texto).
(3) Por fim, ao clicar no que foi filtrado (na linha filtrada) da listbox, ao clicar a linha desse registro na planilha seja selecionada.
No mais ficarei aguardando algum retorno, e, se possível sua ajuda.
sds
JOnas
Respostas
-
Option Explicit Dim ws As Worksheet Private Sub ListBox1_Click() With ws .UsedRange.Find( _ What:=ListBox1.List(ListBox1.ListIndex), _ LookAt:=xlWhole).Select End With End Sub Private Sub TextBox1_Change() Dim i As Long Dim j As Long If TextBox1 = vbNullString Then Exit Sub ResetarLista With ws For i = ListBox1.ListCount - 1 To 0 Step -1 If Not ListBox1.List(i) Like TextBox1 & "*" Then ListBox1.RemoveItem (i) End If Next i End With End Sub Private Sub ResetarLista() Dim rng As Range ListBox1.Clear With ws For Each rng In .UsedRange If rng <> vbNullString Then ListBox1.AddItem rng End If Next rng End With End Sub Private Sub UserForm_Initialize() Set ws = ActiveSheet ResetarLista End Sub Private Sub UserForm_Terminate() Set ws = Nothing End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 17:11
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 17:11
Todas as Respostas
-
Option Explicit Dim ws As Worksheet Private Sub ListBox1_Click() With ws .UsedRange.Find( _ What:=ListBox1.List(ListBox1.ListIndex), _ LookAt:=xlWhole).Select End With End Sub Private Sub TextBox1_Change() Dim i As Long Dim j As Long If TextBox1 = vbNullString Then Exit Sub ResetarLista With ws For i = ListBox1.ListCount - 1 To 0 Step -1 If Not ListBox1.List(i) Like TextBox1 & "*" Then ListBox1.RemoveItem (i) End If Next i End With End Sub Private Sub ResetarLista() Dim rng As Range ListBox1.Clear With ws For Each rng In .UsedRange If rng <> vbNullString Then ListBox1.AddItem rng End If Next rng End With End Sub Private Sub UserForm_Initialize() Set ws = ActiveSheet ResetarLista End Sub Private Sub UserForm_Terminate() Set ws = Nothing End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 17:11
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 14 de junho de 2014 17:11
-
Felipe (Benzadeus);
Dizer obrigado seria muito pouco, contudo, ameniza sabendo do seu potencial e conhecimento, proporcionalmente a sua generosidade, e, principalmente na ausência de egoismo em querer compatilhar, no caso, resolver. E pode apostar que resolveu com excelência, funcionou uma maravilha; "brigadão" mesmo!
Continue assim, qualquer coisa estamos ai!
abração
-Jonas-