none
Realizar busca em 12 GUIAS de uma planilha RRS feed

  • Pergunta

  • Ola pessoal,

    Estou tentando adaptar um código para realizar uma busca em 12 GUIAS e retornar num listbox, porém a rotina só filtra os valores da primeira GUIA. Alguém saberia me explicar como devo fazer o laço para que percorra todas as 12 GUIAS ?

    Public Sub filtroDT(VALOR As String, Valor2 As String)
    
    PESQRES.ListBox1.Clear
    Dim i As Variant
    Dim Plan As Worksheet
    Dim DATA As Date
    Dim data2 As Date
    
    i = 2
    Acum = 0
    DATA = Conversion.CDate(VALOR)
    data2 = Conversion.CDate(Valor2)
    
    linha = 0
    
    For Each sh In Sheets(Array("janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"))
                
    While Range("B" & i) <> ""
    If Range("B" & i).Value >= CDate(VALOR) And Range("B" & i).Value <= CDate(Valor2) Then
    
    'Sempre que houver uma coincidência armazena acumulando os valores da coluna B
    PESQRES.ListBox1.AddItem Range("B" & i).Value
    PESQRES.ListBox1.List(linha, 1) = Range("C" & i).Value
    PESQRES.ListBox1.List(linha, 2) = Range("D" & i).Value
    PESQRES.ListBox1.List(linha, 3) = Format(Range("E" & i).Value)
    PESQRES.ListBox1.List(linha, 4) = Format(Range("F" & i).Value)
    
    linha = linha + 1
    
    
    End If
    i = i + 1
    
    Wend
    Next
    
    End dub
       

    domingo, 12 de outubro de 2014 02:35

Respostas

  • Gui... desculpe a demora

    inicie apenas o valor de i em cada vez que for buscar em uma nova sheet...

    basta incluir essa linha e seu código funcionará!

    For Each sh In Sheets(Array("janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro")) i = 2

    .....restante do seu código

    next

    Abraço!


    Natan



    • Editado 'Natan Silva domingo, 12 de outubro de 2014 20:58
    • Marcado como Resposta Guiu segunda-feira, 13 de outubro de 2014 01:58
    domingo, 12 de outubro de 2014 20:57

Todas as Respostas

  • Ta faltando referenciar de qual planilha os dados serão retirados...

    Public Sub filtroDT(VALOR As String, Valor2 As String)
    
        PESQRES.ListBox1.Clear
        Dim i As Variant
        Dim Plan As Worksheet
        Dim DATA As Date
        Dim data2 As Date
        
        i = 2
        Acum = 0
        DATA = Conversion.CDate(VALOR)
        data2 = Conversion.CDate(Valor2)
        
        linha = 0
        
        For Each sh In Sheets(Array("janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"))
                    
            While sh.Range("B" & i) <> ""
                If sh.Range("B" & i).Value >= CDate(VALOR) And sh.Range("B" & i).Value <= CDate(Valor2) Then
        
                    'Sempre que houver uma coincidência armazena acumulando os valores da coluna B
                    PESQRES.ListBox1.AddItem sh.Range("B" & i).Value
                    PESQRES.ListBox1.List(linha, 1) = sh.Range("C" & i).Value
                    PESQRES.ListBox1.List(linha, 2) = sh.Range("D" & i).Value
                    PESQRES.ListBox1.List(linha, 3) = Format(sh.Range("E" & i).Value)
                    PESQRES.ListBox1.List(linha, 4) = Format(sh.Range("F" & i).Value)
                    
                    linha = linha + 1
        
        
                End If
                i = i + 1
        
            Wend
        Next
    
    End Sub
    


    Natan

    domingo, 12 de outubro de 2014 03:05
  • Ola Natan,

    Obrigado pela resposta, meu caro.

    Os dados serão das 12 planilhas com os nomes dos meses, conforme o Array. Tentei com seu modelo já referenciando, mas nao filtrou nada. Pode me ajudar?

    domingo, 12 de outubro de 2014 14:47
  • Oi Guiu,

    Faça o seguinte, suba sua planilha e me mande o link.

    Me diga qual coluna é para ser pesquisada, qual coluna é pra ser contabilizada e qual critério deve ser considerado.

    Eu achava que seu código já estava funcionando, por isso imaginei que o problema fosse apenas a referencia de onde os dados seriam retirados.

    Abraço!


    Natan

    domingo, 12 de outubro de 2014 16:35
  • Ok Natan,

    Fiz o upload do arquivo no wetransfer, pode baixar no link abaixo.

    Vale dizer que a primeira rotina que postei fazia a busca, mas apenas em uma planilha.

    http://we.tl/vba93AUTp8

    Abraço e obrigado

    domingo, 12 de outubro de 2014 18:10
  • Gui... desculpe a demora

    inicie apenas o valor de i em cada vez que for buscar em uma nova sheet...

    basta incluir essa linha e seu código funcionará!

    For Each sh In Sheets(Array("janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro")) i = 2

    .....restante do seu código

    next

    Abraço!


    Natan



    • Editado 'Natan Silva domingo, 12 de outubro de 2014 20:58
    • Marcado como Resposta Guiu segunda-feira, 13 de outubro de 2014 01:58
    domingo, 12 de outubro de 2014 20:57
  • Imagina Natan. Quem demorou fui eu pra responder.

    Mas agora sim funcionou perfeitamente. E que bobeira que eu tava dando hein...rs. Valeu meu caro, muitíssimo obrigado !!
    segunda-feira, 13 de outubro de 2014 01:58