Usuário com melhor resposta
Macro não copia formula para a celula

Pergunta
-
Bom dia,
Estou tentando colocar uma formula, em uma planilha com uma macro, ja fiz uma anteriormente, concatenando 2 celulas, e agora ela deve fazer uma vlookup, porém, o vba da um erro 1004 sempre que chega no ponto de colocar a formula na celula.
eu fiz a formula na celula e copiei para o VBA, transformei a celula em RC[] e troquei os ";" por ",", e ñ funciona de jeito nenhum.
Será que alguém pode me dar uma luz???
Obrigado.
Segue o código:
'Formula que concatena cod e sku
Range("C2").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
Application.CutCopyMode = False
Selection.Copy
Selection.AutoFill Destination:=Range("C2:" & Cells(x, 3).Address)
'Formula Vlookup
Range("D2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=(IFERROR((VLOOKUP(RC[-1];'SKUposit'!$D:$D,1,0));0));""OK"";""NÃO POSITIVADO"")" <-------------- O PROBLEMA OCORRE NESSA LINHA!!!!
Application.CutCopyMode = False
Selection.Copy
Selection.AutoFill Destination:=Range("D2:" & Cells(x, 4).Address)terça-feira, 7 de maio de 2013 13:13
Respostas
-
A sua fórmula está com problemas.
Você esqueceu de trocar alguns ; por , e a referência $D:$D em uma fórmula R1C1 não está correta - use C4, ou seja, coluna 4
Veja se esta funciona
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=(IFERROR((VLOOKUP(RC[-1],'SKUposit'!C4,1,0)),0)),""OK"",""NÃO POSITIVADO"")"
Espero que ajude
M.
- Marcado como Resposta Walter Varella terça-feira, 7 de maio de 2013 16:50
terça-feira, 7 de maio de 2013 15:37 -
Algumas coisas mais
1. Evite usar Select, pois só faz a macro ficar mais lenta
2. Também não é necessário Copy e AutoFill. Também só atrasa a macro
Você pode colocar a fórmula de uma só vez no Range. Por exemplo, se x = 10, ou seja você quer colcar a fórmula em D2:D10
Sub aTest() Dim x As Long x = 10 Range("D2:D" & x).FormulaR1C1 = "=IF(RC[-1]=(IFERROR((VLOOKUP(RC[-1],'SKUposit'!C4,1,0)),0)),""OK"",""NÃO POSITIVADO"")" End Sub
M.
- Marcado como Resposta Walter Varella terça-feira, 7 de maio de 2013 16:50
terça-feira, 7 de maio de 2013 15:53
Todas as Respostas
-
A sua fórmula está com problemas.
Você esqueceu de trocar alguns ; por , e a referência $D:$D em uma fórmula R1C1 não está correta - use C4, ou seja, coluna 4
Veja se esta funciona
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=(IFERROR((VLOOKUP(RC[-1],'SKUposit'!C4,1,0)),0)),""OK"",""NÃO POSITIVADO"")"
Espero que ajude
M.
- Marcado como Resposta Walter Varella terça-feira, 7 de maio de 2013 16:50
terça-feira, 7 de maio de 2013 15:37 -
Algumas coisas mais
1. Evite usar Select, pois só faz a macro ficar mais lenta
2. Também não é necessário Copy e AutoFill. Também só atrasa a macro
Você pode colocar a fórmula de uma só vez no Range. Por exemplo, se x = 10, ou seja você quer colcar a fórmula em D2:D10
Sub aTest() Dim x As Long x = 10 Range("D2:D" & x).FormulaR1C1 = "=IF(RC[-1]=(IFERROR((VLOOKUP(RC[-1],'SKUposit'!C4,1,0)),0)),""OK"",""NÃO POSITIVADO"")" End Sub
M.
- Marcado como Resposta Walter Varella terça-feira, 7 de maio de 2013 16:50
terça-feira, 7 de maio de 2013 15:53 -
E se o range da vlookup em vez de uma coluna, for 2 ou mais, como eu escrevo isso dentro do formula?
Por exemplo: A e B, ou de A a T?
Obrigado.
- Editado Walter Varella terça-feira, 7 de maio de 2013 17:33
terça-feira, 7 de maio de 2013 16:51 -
Se seu Excel for português, experimente utilizar a propriedade FormulaLocal do objeto Range e faça as modificações sem maiores complicações:
ActiveCell.FormulaLocal = "=SE(N17=(SEERRO((PROCV(N17;SKUposit!$D:$D;1;0));0));""OK"";""NÃO POSITIVADO"")"
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
quarta-feira, 8 de maio de 2013 00:08Moderador -
E se o range da vlookup em vez de uma coluna, for 2 ou mais, como eu escrevo isso dentro do formula?
Por exemplo: A e B, ou de A a T?
Obrigado.
Por exemplo:
Se for coluna D:G
Range("D2:D" & x).FormulaR1C1 = "=VLOOKUP(RC[-1],'SKUposit'!C4:C7,4,0)"
C4 = coluna D e C7 = coluna G
M.
quarta-feira, 8 de maio de 2013 04:01 -
cara, pq vc nao deixa essa formula noutra celula oculta e apenas copia atualizando a parte que vc querdomingo, 12 de julho de 2015 19:43