Notifications
Clear all

Juntando 2 códigos em 1 só

5 Posts
3 Usuários
0 Reactions
905 Visualizações
(@mablove)
Posts: 7
Active Member
Topic starter
 

Boa tarde gente,

sou iniciante em vba e preciso de ajuda.

Tenho 2 códigos que preciso juntar e fazer 1 somente.

este código abaixo faz uma pesquisa entre datas de uma planilha e cola em outra planilha. O problema dele é que ele só pesquisa em 1 coluna.

 Sub Relatório()
  Application.EnableEvents = False
    ' Verifica se o valor alterado foi na célula
    'If Not Intersect([K1], Target) Is Nothing Then
        
        Dim lastRow As Long
        Dim lastResultRow As Long
        Dim X As Long
        
        ' Verifica qual a ultima célula preenchida
        lastRow = Plan1.Cells(Rows.Count, 1).End(xlUp).Row
        
        ' Apaga valores anteriores
        Plan2.Range("A2:I65536").ClearContents
        
        lastResultRow = 2 'linha resultado
        
        ' Ciclo em todas as linhas
        For X = 2 To lastRow '1 Linha dados pequisa
        
           ' verifica se o valor é igual ao da pesquisa
           If Plan1.Cells(X, 8).Value >= Plan2.[J1].Value And Plan1.Cells(X, 8) <= Plan2.[K1].Value Then '1 coluna pequisa
           
                ' Copia os valores
                Plan2.Cells(lastResultRow, 1).Value = Plan1.Cells(X, 1).Value
                Plan2.Cells(lastResultRow, 2).Value = Plan1.Cells(X, 2).Value
                Plan2.Cells(lastResultRow, 3).Value = Plan1.Cells(X, 3).Value
                Plan2.Cells(lastResultRow, 4).Value = Plan1.Cells(X, 4).Value
                Plan2.Cells(lastResultRow, 5).Value = Plan1.Cells(X, 5).Value
                Plan2.Cells(lastResultRow, 6).Value = Plan1.Cells(X, 6).Value
                Plan2.Cells(lastResultRow, 7).Value = Plan1.Cells(X, 7).Value
                Plan2.Cells(lastResultRow, 8).Value = Plan1.Cells(X, 8).Value
                Plan2.Cells(lastResultRow, 9).Value = Plan1.Cells(X, 9).Value
            
                lastResultRow = lastResultRow + 1
           End If
        Next
        
    
  '  End If
    Application.EnableEvents = True
'somaEstab

End Sub

Já esse código aqui faz a pesquisa de somente UMA DATA em toodas as planilhas que eu tiver e consigo setar várias colunas ao mesmo tempo.

Private Sub CommandButton1_Click()

Dim valor As Integer
Dim c As Variant
Dim procurado As Variant
Dim result As VbMsgBoxResult
Dim i, QuantPlanilhas As Integer
QuantPlanilhas = ThisWorkbook.Worksheets.Count

                If Me.txtdatalocalizar = Empty Then
                MsgBox "Informar a data a ser pesquisada"
                Me.txtdatainicial.SetFocus
                Else
                       procurado = Me.txtLocalizar
                       
                  If IsDate(procurado) Then
                  procurado = CDate(procurado)
                  End If
  
                      For i = 1 To QuantPlanilhas Step 1
                         With Worksheets(i).Range("E:Z")
                             Set c = .Find(procurado, LookIn:=xlValues)
                            If Not c Is Nothing Then
                         Worksheets(i).Select
                         Range(c.Address).Select
                         result = MsgBox("Deseja continuar a busca?", vbYesNo, "Continuar?")
                         
                                 If result = vbNo Then
                      Exit Sub
                    End If
                End If
            End With
        Next
    End If
        
       
End Sub

Eu preciso que os 2 códigos virem somente 1, que o código resultante tenha a pesquisa entre datas mostrando os resultados em uma planilha a parte (código 1) e que a pesquisa seja feita em todas as outras planilhas, em várias colunas, como no código 2.
Tentei de várias formas mas não sei como proceder :cry:

 
Postado : 16/02/2018 5:36 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

É menos trabalhoso escrever um código partindo do zero do que remendar códigos existentes e tentando adivinhar o resultado desejado.
Sugiro que você disponibilize uma amostra do seu arquivo Excel com algumas linhas com dados (10 a 15 linhas), com o resultado desejado e coloque na própria planilha as explicações de como obteve o resultado.

Osvaldo

 
Postado : 17/02/2018 8:04 am
(@klarc28)
Posts: 971
Prominent Member
 

http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=27072&p=134935&hilit=pesquisa+colunas#p134935
https://www.youtube.com/watch?v=H3pjAg0qTu8
https://www.youtube.com/watch?v=lXXzHrUXTEI
https://www.youtube.com/watch?v=PYVfxWBLrrk

As linhas de código a seguir são absurdas, pois verificam se é data, se for, converte em data. Ora, se é data, não é necessário converter para data:

                  If IsDate(procurado) Then
                  procurado = CDate(procurado)
                  End If

 
Postado : 18/02/2018 8:14 am
(@mablove)
Posts: 7
Active Member
Topic starter
 

klarc28, pode até ser, mas funciona independente disso.

 
Postado : 18/02/2018 12:33 pm
(@mablove)
Posts: 7
Active Member
Topic starter
 

klarc28, vou assistir os vídeos

 
Postado : 18/02/2018 12:34 pm