none
listbox vba execel retorona somente dados referentes a uma combobox ou textbox RRS feed

  • Pergunta

  • Olá a todos

    Preciso que minha listbox retorne somente dados referentes a uma combo box ou textbox e me conte o numero de registros.

    exemplo: se eu colocar o nome André na combobox, ou textbox, a listbox so me retornará dados referentes ao andré e me mostrar quantos registros com esse nome foram encontrados (podendo ser em outra list ou textbox)

    Desde ja Agradeço a atenção

    terça-feira, 7 de julho de 2015 13:40

Respostas

  • Sugiro a utilização do auto filtro via vba.

    Você pode pegar o conteúdo da textbox, filtra-lo na sua planilha e carregar o resultados através do método additem.

    Você pode gravar a utilização do auto filtro pelo gravador de macros para facilitar

    sexta-feira, 10 de julho de 2015 16:45

Todas as Respostas

  • Esses controles estão em um formulário ? Como você os carrega ?
    quarta-feira, 8 de julho de 2015 12:24
  • olá

    sim, estao: com formulario de login, administrador, respectivas planilhas, mas acho que esta ficando pesado porque começa a custar pra abri :-/

    sou novo mas estou gostando muito de vba

            

    Private Sub CONSULTA_LIMPAR_Click()
    Range("H2:M200").Clear
    Range("A2").Select

    MsgBox "DIGITE UM PRESIDENTE DE COMISSÃO", vbInformation, "Aviso"
    End Sub

    Private Sub ListBox_CONSULTA1_Click()

    End Sub

    Private Sub TextBox_CONSULTA_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Sheets("COMISSOES").Select
                If KeyCode = 13 Then ' é uma macro que é chamada

            ListBox_CONSULTA1.RowSource = ""
            pesquisa
        End If
    End Sub

    Sub pesquisa()
        Dim n%
        n = 1
        Range("H2:M200").Clear
        Range("a2").Select
        Do While ActiveCell <> ""
            If InStr(1, ActiveCell, TextBox_CONSULTA) > 0 Then
                'Endereco = ActiveCell.Address
                Range("h" & n).Offset(1, 0).Value = ActiveCell
                Range("h" & n).Offset(1, 1).Value = ActiveCell.Offset(0, 1)
                Range("h" & n).Offset(1, 2).Value = ActiveCell.Offset(0, 2)
                Range("h" & n).Offset(1, 3).Value = ActiveCell.Offset(0, 3)
                Range("h" & n).Offset(1, 4).Value = ActiveCell.Offset(0, 4)
                Range("h" & n).Offset(1, 5).Value = ActiveCell.Offset(0, 5)
                n = n + 1
            End If
               ActiveCell.Offset(1, 0).Select
        Loop
        If n > 1 Then
            ListBox_CONSULTA1.RowSource = "h2:l" & n
        Else
            ListBox_CONSULTA1.RowSource = ""
            MsgBox "Nenhum registro encontrado", vbInformation, "Aviso"
            TextBox_CONSULTA = ""
            Range("A2").Select

        End If
    End Sub

    Private Sub TextBox1_Change()
    Range("H2:M200").Clear
    Range("A2").Select

    End Sub

    Private Sub UserForm_Click()
    Range("H2:M200").Clear
    Range("A2").Select

    End Sub

    ' fiz tambem um formulario de cadastro

    Private Sub BOTAO_GRAVAR_Click()

    Worksheets("COMISSOES").Select




    'Range("H2:M56537").Clear


    'Abaixo criei a variavel pula linha onde irá armazenar a quantidade de linhas que foram preenchidas + 1


    pulalinha = Worksheets("COMISSOES").UsedRange.Rows.Count + 1



                                                        'Aqui começa a gravaçao




                                                        ' PRENCHE CAIXAS COMISSOES
                                                        
                                                        
                                                        

    If TextBox_NOME_PRESIDENTE = "" Then
    MsgBox "Digite o NOME DO PRESIDENTE!"
    TextBox_NOME_PRESIDENTE.SetFocus
    Exit Sub


    Else

    If TextBox_NPAD = "" Then
    MsgBox "Digite NÚMERO DO PAD!"
    TextBox_NPAD.SetFocus
    Exit Sub

    Else

    If RAMAL = "" Then
    MsgBox "Digite  o RAMAL  DO PRESIDENTE DA COMISSÃO!"
    RAMAL.SetFocus
    Exit Sub

    Else

    If TextBox_SECRETARIO = "" Then
    MsgBox "Digite TextBox SECRETÁRIO!"
    TextBox_SECRETARIO.SetFocus
    Exit Sub

    Else

    If TextBox_VOGAL = "" Then
    MsgBox "Digite VOGAL!"
    TextBox_VOGAL.SetFocus
    Exit Sub


                                                                    

       
    End If
    End If
    End If
    End If
    End If


       
       

                                                            ' AGORA GRAVANDO NA PLANILHA DE COMISSOES
                                                            

                                                            
    Cells(pulalinha, 1) = TextBox_NOME_PRESIDENTE
    Cells(pulalinha, 2) = TextBox_NPAD
    Cells(pulalinha, 3) = RAMAL
    Cells(pulalinha, 4) = TextBox_SECRETARIO
    Cells(pulalinha, 5) = TextBox_VOGAL

    Range("A2").Select


        
        
        

    ' Mensagem de gravação concluida

    MsgBox "Dados gravados com sucesso"

    ' Limpar caixa de cadastro

    'TextBox_NSCOM = ""
    TextBox_NOME_PRESIDENTE = ""
    TextBox_NPAD = ""
    RAMAL = ""
    TextBox_SECRETARIO = ""
    TextBox_VOGAL = ""






     
     'COLOCAR O FOCO NO PRESIDENTE
     
    TextBox_NOME_PRESIDENTE.SetFocus
                                                                    
                                         
                                                                    
    'COMANDO PARA SALVAR O TRABALHO
     
     ActiveWorkbook.Save






    End Sub

    Private Sub CommandButton1_Click()

    Sheets("CONSULTA").Select


    CONSULTA1.Show

    Unload COMISSOES


    End Sub


    Private Sub UserForm_Click()

    End Sub

    Private Sub UserForm_Initialize()





        'Sheet("CONSULTA").Select
        Application.CutCopyMode = False
        Selection.ClearContents
        ListBox_CONSULTA1 = ""
      
        

    End Sub

    sexta-feira, 10 de julho de 2015 12:00
  • esse loop do While achei na inter net (ainda nao sei usar laços de repetição), e ainda nao fiz a contagem de registros procurados
    sexta-feira, 10 de julho de 2015 12:05
  • como pode ver usei muitos if e else rs

    sexta-feira, 10 de julho de 2015 12:11
  • Sugiro a utilização do auto filtro via vba.

    Você pode pegar o conteúdo da textbox, filtra-lo na sua planilha e carregar o resultados através do método additem.

    Você pode gravar a utilização do auto filtro pelo gravador de macros para facilitar

    sexta-feira, 10 de julho de 2015 16:45