none
selecionar linha na planilha pela lisbox RRS feed

  • 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 

    segunda-feira, 20 de dezembro de 2010 15:52

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
    quarta-feira, 22 de dezembro de 2010 01:10
    Moderador

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
    quarta-feira, 22 de dezembro de 2010 01:10
    Moderador
  • 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-

    quarta-feira, 22 de dezembro de 2010 11:29