Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Macro para digitar fórmula Vlookup (procv)

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
fcunha
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Dez 06, 2018 6:14 am

Macro para digitar fórmula Vlookup (procv)

Mensagem por fcunha » Seg Jun 10, 2019 12:58 pm

Boa tarde,

Eu estou criando o código abaixo para ajudar os membros do meu time a atualizar os dados da planilha deles puxando os dados da planilha antiga quando eu não estiver por perto (eu entendo muito pouco de VBA, mas consigo me virar). Então, eu encontrei uma macro muito próxima com a que eu queria e comecei a editá-la de acordo com minhas necessidades.
A primeira procura a planilha antiga; a segunda faz com que apertando no botão 'Search' ele execute a primeira; e a terceira (onde está o meu problema) deveria escrever nas células a fórmula correta. No entanto, o resultado nas célula está sendo:

=VLOOKUP($B11,'[M:\Progress Report\[Progress Report - W2v3.xlsb]Updated Report]Progress Report - W2v3.xlsb]Upd'!$B:$AV,10,FALSE)

ao invés de:

=VLOOKUP($B11,'[M:\Progress Report\[Progress Report - W2v3.xlsb]Updated Report'!$B:$AV,10,FALSE)

Alguém poderia me auxiliar? Ou a corrigir o problema ou fazendo outra fórmula que traga o mesmo resultado. Eu não faço ideia do porquê isso está duplicando.
O mais engraçado é que se eu procurar usando a primeira macro e depois que encontrar o nome da planilha, eu apagar o endereço e apagar a extensão, funciona. Só que a galera aqui se confunde toda nisso, aí fica dando erro. Por isso preciso da fórmula funcionando perfeitinha.

Agradeço imensamente a todos desde já.

Código: Selecionar todos


Public Function Localizar_Arquivo() As String

    Dim Extensão, Título_do_Programa As String, Arquivo As Variant
    
    Extensão = "Excel File (*.XLS;*.XLSX;*.XLSB),"
    
    Título_do_Programa = "Search File"

    
    ChDrive ("C")
    ChDir ("C:\")
    
    With Application
    
        Filename = .GetOpenFilename(Extensão, 3, Título_do_Progama)
        
        ChDrive (Left(.DefaultFilePath, 1))
        ChDir (.DefaultFilePath)
                MsgBox "Do not forget to delete the path (C:\...\) and the extension (.xlsb)", vbOKOnly + vbInformation
       
    End With
    
    If Filename = False Then
        MsgBox "No File Selected"
        Exit Function
    End If
    
    Localizar_Arquivo = Filename
    
End Function


Private Sub CommandButton1_Click()
txt_Procurar = Localizar_Arquivo

End Sub

Private Sub cmd_PROCV_Click()

Dim ThisB As Variant

Set ThisB = ThisWorkbook

If txt_Procurar.Text = "" Then
txt_Procurar.Text = ""

Set Vlookup = Form

End If

ThisB.Activate

ThisB.Sheets("Updated Report").Activate
Range("D4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,3,false)"
Range("E4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,4,false)"
Range("J4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,9,false)"
Range("K4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,10,false)"
Range("L4").Select
ActiveCell.FormulaR1C1 = "=vlookup(RC2,'[" & txt_Procurar.Text & "]Updated Report'!C2:C48,11,false)"


Vlookup.Hide

       
      MsgBox "Please check if your data was accurately recovered", vbOKOnly, "Data Restored"
      
      
End Sub



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.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1136
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Macro para digitar fórmula Vlookup (procv)

Mensagem por Reinaldo » Seg Jun 10, 2019 1:53 pm

Veja se auxilia:

Código: Selecionar todos

Public Function Localizar_Arquivo() As String

Dim Extensão As String, Título_do_Progama As String
Dim Arquivo As Variant, Filename As Variant
Dim Separa() As String
   
Extensão = "Excel File (*.XLS;*.XLSX;*.XLSB),"
    
Título_do_Progama = "Search File"
    
ChDrive ("C")
ChDir ("C:\")
    
With Application
    Filename = .GetOpenFilename(Extensão, 3, Título_do_Progama)
    ChDrive (Left(.DefaultFilePath, 1))
    ChDir (.DefaultFilePath)
            MsgBox "Do not forget to delete the path (C:\...\) and the extension (.xlsb)", vbOKOnly + vbInformation
End With
    
If Filename = False Then
    MsgBox "No File Selected"
    Exit Function
End If
Separa() = Split(Filename, "\")
Separa = Split(Separa(UBound(Separa)), ".")
Localizar_Arquivo = Separa(0)
    
End Function


Reinaldo
Gostou da resposta?:?: :oops: :D :mrgreen:

fcunha
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Qui Dez 06, 2018 6:14 am

Re: Macro para digitar fórmula Vlookup (procv)

Mensagem por fcunha » Ter Jun 11, 2019 8:38 am

Funcionou. Muito obrigado Reinaldo. Você me salvando novamente.

tem alguma ideia do porquê a outra fórmula incluindo o endereço da planilha estava repetindo metade da fórmula?? Será que eu deveria ter utilizado a fórmula indirect?



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