Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Botão macro de localizar

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Sevenir
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sex Jun 23, 2017 3:56 pm

Botão macro de localizar

Mensagem por Sevenir »

Olá amigos!

Estou tentando concluir uma planilha mas falta apenas inserir um botão com macro para localizar dados.

Funciona assim: eu tenho a plan1 e a plan2, então tenho que localizar uma célula na plan2 que coincida com o que tenho na célula A1 da plan1. Já gravei a macro mas não deu certo porque os dados da célula A1 da plan1 sempre muda e a macro gravou aquele conteúdo que estava na célula da plan1 na hora da criação.

Então resumindo: Ao clicar no botão, eu quero localizar (e selecionar) na plan2 os dados que estão na célula A1 da plan1 (que sempre mudam).
Obrigado Galera!
Abraços!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Botão macro de localizar

Mensagem por srobles »

Sevenir,

Experimente o exemplo abaixo. Adapte-o á sua necessidade.

Código: Selecionar todos

Sub localizarDados()
    'Variável para armazenar o valor da célula A1 da Plan1
    Dim vValor As String
    vValor = ThisWorkbook.Sheets("Plan1").Range("A1")
    
    'Selecionamos a Plan2
    With ThisWorkbook.Sheets("Plan2")
        .Activate
        'Selecionamos a célula A1
        Range("A1").Select
        
        'Se houver erro, vá para o tratamento
        On Error GoTo vErro
        'Fazemos a pesquisa na Plan2 pelo valor da variável
        Cells.Find(vValor, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate
        
        'Se encontrarmos o valor na Plan2, informamos o endereço da célula
        MsgBox "Valor encontrado na planilha " & ActiveSheet.Name & ", na célula " & ActiveCell.Address & ".", vbInformation, "Pesquisa"
        'Saimos da rotina
        Exit Sub

'Tratamento de erro
vErro:
        'Se o código de erro for 91 (valor não encontrado)
        If Err = 91 Then
            MsgBox "O valor " & vValor & " não foi localizado na base de dados!", vbCritical, "Erro"
            ThisWorkbook.Sheets("Plan1").Activate
        End If
    End With
End Sub
Abs


Sevenir
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sex Jun 23, 2017 3:56 pm

Re: Botão macro de localizar (RESOLVIDO)

Mensagem por Sevenir »

Valeu!!
Muito bom!!
Funcionou maravilha!
Obrigado irmão!!

Abraços

Sevenir


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Botão macro de localizar

Mensagem por srobles »

Sevenir,

Que bom que este exemplo atendeu á sua necessidade.

Abs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Adonias
Manda bem
Manda bem
Mensagens: 167
Registrado em: Sáb Jun 02, 2012 12:55 pm

Re: Botão macro de localizar

Mensagem por Adonias »

srobles, ótimo código, vejo que poderia usálo para uma planilha que estou tentando.
Suponha que o valor a ser procurado deverar ser o conteudo da célula A2 da plan1

e que quanto o código encontrar o valor em uma das planilhas, deverá inserir um valor que está a frente da célula A2 da Plan1 em uma deter minada célula da planilha encontrada.

como eu faria isso?


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Botão macro de localizar

Mensagem por srobles »

Adonias,

O novo valor sempre será adicionado á coluna B ou se já houver algum valor na coluna B, deverá adicionar o valor na coluna C e assim por diante?

Caso seja sempre na coluna B, experimente adicionar um módulo, e nele copie e cole o código abaixo :

Código: Selecionar todos

Option Explicit
Sub localizarDados()
    'Variável para armazenar o valor da célula A1 da Plan1
    Dim vPesquisa As String
    Dim vReferencia As String
    
    vPesquisa = ThisWorkbook.Sheets("Plan1").Range("A2")
    vReferencia = ThisWorkbook.Sheets("Plan1").Range("B2")
    
    
    'Verificamos quantas planilhas a pasta possui
    Dim indicePlanilha As Integer
    Dim contPlanilhas As Integer
    
    contPlanilhas = ThisWorkbook.Sheets.Count
    
    For indicePlanilha = 2 To contPlanilhas Step 1
        'Selecionamos a Planilha
        With ThisWorkbook.Sheets(indicePlanilha)
            Application.Wait 200
            .Activate
            'Selecionamos a célula A1
            Range("A1").Select
            
            'Se houver erro, vá para o tratamento
            On Error GoTo vErro
            'Fazemos a pesquisa na Plan2 pelo valor da variável
            Cells.Find(vPesquisa, ActiveCell, xlValues, xlWhole, xlByRows, xlNext).Activate
            
            'Aqui adicionamos o novo valor á coluna B
            ActiveCell.Offset(0, 1) = vReferencia
            
            'Se encontrarmos o valor na Plan2, informamos o endereço da célula
            MsgBox "Valor encontrado na planilha " & ActiveSheet.Name & ", na célula " & ActiveCell.Address & ".", vbInformation, "Pesquisa"
            'Saimos da rotina
            'Exit Sub
    
    'Tratamento de erro
vErro:
            'Se o código de erro for 91 (valor não encontrado)
            If Err = 91 Then
                MsgBox "O valor " & vPesquisa & " não foi localizado na base de dados!", vbCritical, "Erro"
                ThisWorkbook.Sheets("Plan1").Activate
            End If
        End With
    
    Next
End Sub
E então, adicione um botão á Plan1 e chame a rotina acima.
Abs


Adonias
Manda bem
Manda bem
Mensagens: 167
Registrado em: Sáb Jun 02, 2012 12:55 pm

Re: Botão macro de localizar

Mensagem por Adonias »

srobles,
já tinha feito com base em algumas macro do forum, um modelo e crei que o seu código é bem melhor, mas não estou sabendo utilizá-lo
Poderia dar uma olhada no meu modelo e dizer onde eu coloco seu código para ter o que preciso
Anexos
testeenv.rar
(47.11 KiB) Baixado 187 vezes


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: Botão macro de localizar

Mensagem por srobles »

Adonias,

Veja se o que fiz se aproxima do que deseja.

Desculpe, mas não entendi muito bem a sua necessidade.

Abs
Anexos
testeenv.zip
(60.35 KiB) Baixado 183 vezes


Adonias
Manda bem
Manda bem
Mensagens: 167
Registrado em: Sáb Jun 02, 2012 12:55 pm

Re: Botão macro de localizar

Mensagem por Adonias »

srobles,,
Veja bem:
A plan pgto vou preencher os dados co copiar colar de uma outra fonte de pesquisa

uma vez copiado os dados na plan "Pgto" tenho de pegar os valores pagos por CNPJ e competência e localizar a planilha respectiva adicionando o valor na coluna valor pago que começa na linha 20 coluna D de cada planilha

o código tem de identificar a planilha correspondente ao CNPJ e dentro dessa planilha a competência igua a da plan "PGTO" para poder inserir o valor na célula "valor pago"


Adonias
Manda bem
Manda bem
Mensagens: 167
Registrado em: Sáb Jun 02, 2012 12:55 pm

Re: Botão macro de localizar

Mensagem por Adonias »

Outro detalhe, preciso que o código lance todos os valores da plan "PGTO" nas respectivas planilhas
É esse loop que tô apanhando pra conseguir


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder