Por que usar este código para substituir uma fórmula me deu um erro?

0

No Excel, uso o seguinte para limpar a célula E5 e substituí-la pelo nome da palavra.

Sheets("Invoice").Range("E5") = "Name"

Eu também posso usar o seguinte para substituir o G11 pelo código VLOOKUP que tenho aqui e isso funciona.

Sheets("Invoice").Range("G11") = "=VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)"

O problema é quando eu uso

Sheets("Invoice").Range("G11") = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Estou recebendo um erro de depuração e a única coisa que posso imaginar é que as cotações que tenho no centro do código estão atrapalhando as cotações usadas no início e no final do código do VB.

    
por Thomas Schaef 26.11.2014 / 21:32

2 respostas

0

No VBA, um " é usado para incluir uma string. Para usar um " dentro de uma string, use "" . O que está errado em sua fórmula é que o VBA converte as duas citações intermediárias em uma citação. Se você substituir o "" no meio por """" , você deve estar pronto para ir.

Veja este link do Stack Overflow para referência.

    
por 26.11.2014 / 23:15
0

Se apenas alterar as aspas de "" para "" "" não for corrigido, talvez você deva tentar configurar a propriedade de valor do objeto de intervalo, em vez do próprio objeto de intervalo.

Sheets("Invoice").Range("G11") = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Você está tentando definir o objeto Range como um valor de string para sua equação. O que você provavelmente quer fazer é definir a propriedade .text , .value ou .formula como "nome" ou sua fórmula. (também como @agtoever mencionou que você precisa mudar "" para "" "")

Tente assim:

Sheets("Invoice").Range("G11").value = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"""",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Usar .formula ou .text também pode funcionar, mas eu só olhei para uma das minhas pastas de trabalho e é assim que eu trabalho.

    
por 26.11.2014 / 23:28