Ir ao conteúdo
  • Cadastre-se

Excel Fórmula VLOOKUP utilizando uma Variant no VBA


Ir à solução Resolvido por AfonsoMira,

Posts recomendados

Bom dia pessoal, espero que estejam bem.

 

Estou terminando uma macro que ao Clicar em um botão (Start Item a Item) é aberto uma caixa onde seleciono um arquivo para fazer um outro processo. Esse arquivo fica aberto até terminar esse processo. Eu preciso fazer um Vlookup e no meio da fórmula preciso chamar o nome do arquivo aberto que está em uma Variant (Filename). Porém quando a macro executa a fórmula aparece o caminho todo e está muito demorado. Preciso que só pegue o nome do arquivo e coloque na fórmula. Lembrando que todo mês o nome irá alterar, por isso de armazenar em uma Variant.

 

1-) A fórmula é a seguinte: "=VLOOKUP(RC[-5],'" & Filename & "'!C35:C147,113,1)"

 

2-) Outro ponto é no filtro que eu faço. Queria que chamasse a Sheet1 ao invés do nome (em vermelho):
ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort.SortFields.Clear

 

Sub ItemItem()

    Dim Filename As String
    Dim SrcWkb As Workbook
    Dim Ws As Worksheet
    
    ThisWorkbook.Activate
    
    Filename = Application.GetOpenFilename _
    (Title:="Selecione o Arquivo Item a Item", _
    FileFilter:="Excel Files *.xls* (*.xls*),")
    
    If Filename = "Falso" Then
        MsgBox "Formato incompatível do arquivo" _
        , vbCritical _
        , "Erro!"
        Exit Sub
    Else
        
        sFileName = Application.ThisWorkbook.Name
        
        Application.DisplayAlerts = False
                
        Set SrcWkb = Excel.Workbooks.Open(Filename, True, True)
        SrcWkb.Worksheets(1).Activate
        Set Ws = SrcWkb.Worksheets(1)
        
        With Sheet2
        Rows("5:5").Select
        Selection.AutoFilter
    ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort.SortFields. _
        Add2 Key:=Range("EQ5:EQ100000"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort.SortFields. _
        Add2 Key:=Range("AI5:AI100000"), SortOn:=xlSortOnValues, Order:= _
        xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
        
            .Activate
                Sheets("IR").Select
                linha = 2
                Do While Sheet2.Range("A" & linha) <> ""
                        Sheet2.Range("F" & linha).Formula = "=VLOOKUP(RC[-5],'" & Filename & "'!C35:C147,113,1)"
                        linha = linha + 1
                Loop
                
                Columns("F:F").Select
                Selection.Copy
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
                Application.CutCopyMode = False
                Range("A1").Select
                
                Sheets("INSS").Select
                LR1 = Range("A:A").SpecialCells(xlCellTypeLastCell).Row
                linha1 = 2
                Do While Sheet3.Range("A" & linha1) <> ""
                        Sheet3.Range("F" & linha1).Formula = "=VLOOKUP(RC[-5],'" & Filename & "'!C35:C147,113,1)"
                        linha1 = linha1 + 1
                Loop
                Columns("F:F").Select
                Selection.Copy
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
                Application.CutCopyMode = False
                Range("A1").Select
                
                Sheets("ISS").Select
                LR2 = Range("A:A").SpecialCells(xlCellTypeLastCell).Row
                linha2 = 2
                Do While Sheet4.Range("A" & linha2) <> ""
                        Sheet4.Range("F" & linha2).Formula = "=VLOOKUP(RC[-5],'" & Filename & "'!C35:C147,113,1)"
                        linha2 = linha2 + 1
                Loop
                Columns("F:F").Select
                Selection.Copy
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
                Application.CutCopyMode = False
                Range("A1").Select
                    
        End With
        
        If Not SrcWkb Is Nothing Then
            SrcWkb.Close False
            Set SrcWkb = Nothing
            Set Ws = Nothing
        End If
    End If
    
            Application.DisplayAlerts = True
            
            MsgBox "Item a Item OK!!!"

End Sub

 

Macro_IDF_NUM - Copia.zip

Link para o comentário
Compartilhar em outros sites

Bom dia, consegui resolver de uma forma mais simples.

 

Outro ponto é no filtro que eu faço. Queria que chamasse a Sheet1 ao invés do nome da Sheet (em vermelho):
ActiveWorkbook.Worksheets("Item a Item Julho 2022").AutoFilter.Sort.SortFields.Clear

 

Inseri a palavra TESTE na célula B5 e utilizei o código abaixo. E no filtro deixei como padrão o TESTE:

ActiveWorkbook.Worksheets("TESTE").AutoFilter.Sort.SortFields.Clear

Dim rs As Worksheet

  For Each rs In Sheets
  	rs.Name = rs.Range("B5")
  Next rs

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!