locked
Macro não copia formula para a celula RRS feed

  • 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.



    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:08
    Moderador
  • 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 quer
    domingo, 12 de julho de 2015 19:43