Página 1 de 1

Inserindo Fórmula VLookup VBA com diferentes worbooks

Enviado: 01 Jun 2016 às 09:33
por JCNeto
Bom dia a todos

Agradeço se alguem puder me ajudar com este assunto.

Estou desenvolvendo uma macro que irá adicionar a fórmula VLookup em uma Workbook adicionada e, para isso, declarei a Workbook atual e a nova Workbook. Quando vou utilizar o comando "ActiveCell.FormulaR1C1 =" se eu utilizar o comando utilizando o nome da planilha "=VLOOKUP(RC[-1],'[Macro_Teste.xlsm]DB'!R5C1:R" & LRWBP & "C19,2,0)" funciona normalmente, mas quando tento utlizar Worbook como declarada apresenta erro de depuração. "=VLOOKUP(RC[-5]," & WBPSheet & "!R5C1:R" & LRWBP & "C19,2,0)"
Abaixo segue o código que desenvolvi até o momento....

Option Explicit
Sub Teste()
Dim LRWBS As Integer
Dim LRWBP As Integer
Dim i As Integer
Dim WBP As Workbook
Dim WBS As New Workbook
Dim WBPSheet As Worksheet

Set WBP = ActiveWorkbook
Set WBPSheet = WBP.Sheets("DB")
LRWBP = Cells(Rows.Count, 1).End(xlUp).Row
Set WBS = Workbooks.Add
WBS.Sheets(1).Select
LRWBS = 25
For i = 1 To LRWBS

Range("A" & i).Select
Selection = "Cliente" & i

Next i

Range("B1").Select

'***********************************************************************************************
'Abaixo as duas formas, a primeira linha funciona normalmente, mas não utilizando a WB declarada
'e sim o nome da planilha
'Já a segunda, através da Workbook declarada, não encontrei a foma correta de utilizar a fórmula
'Peço ajuda para escrever esta fórmula
'***********************************************************************************************

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'[Macro_Teste.xlsm]DB'!R5C1:R" & LRWBP & "C19,2,0)" 'Funciona normalmente
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1]," & WBPSheet & "!R5C1:R" & LRWBP & "C19,2,0)" 'Apresenta erro de depuração

'************************************************************************************************

Range("B1:B" & LRWBS).Select
Selection.FillDown
End Sub


Desde já agradeço a atenção

JC Neto

Re: Inserindo Fórmula VLookup VBA com diferentes worbooks

Enviado: 01 Jun 2016 às 13:24
por MichelExcel
Olá JCNeto,

dá um:

debug.print "=VLOOKUP(RC[-1],'[Macro_Teste.xlsm]DB'!R5C1:R" & LRWBP & "C19,2,0)"

e

debug.print "=VLOOKUP(RC[-1]," & WBPSheet & "!R5C1:R" & LRWBP & "C19,2,0)"

e verifique se retornam a mesma string. Fazendo isso você provavelmente encontrará alguma diferença na segunda em relação a primeira. Aí é só ajustar.

Att.
#MichelExcel

Re: Inserindo Fórmula VLookup VBA com diferentes worbooks

Enviado: 01 Jun 2016 às 14:43
por Reinaldo
A sintaxe para a expressão Formula "espera" argumentos em forma de string (texto).
Ao definir sua variável como worksheet, a mesma e assumida como um objeto não uma string,motivo do erro.
Experimente definir sua variavel com String
Dim WBPSheet as String
e montar a mesma +/- assim:
WBPSheet = "'[" & ActiveWorkbook.Name & "]DB'"