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
É 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
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
klarc28, pode até ser, mas funciona independente disso.
klarc28, vou assistir os vídeos