![Erro ao enviar uma string para a célula](https://rvso.com/image/1415043/Erro%20ao%20enviar%20uma%20string%20para%20a%20c%C3%A9lula.png)
Estou usando uma macro vba para automatizar parte de uma planilha do Excel. A linha a seguir continua me dando um erro de tempo de execução 1004 # erro de aplicativo ou objeto definido
Sheets("Material").Last.Offset(0, 1).Value = "=SUMIF(MainTable[0],AG12,MainTable[Cost])"
Usando relógios, sei que o lado esquerdo da equação faz referência à célula adequada. Presumo que o erro esteja na string à direita que está sendo escrita na célula - estou pensando possivelmente nas referências da minha tabela? O resto das fórmulas como strings são escritas corretamente e não contêm referências de tabela.
Responder1
Presumi que o erro estava no código porque, quando recebi o erro de tempo de execução, não houve saída para a célula especificada. Na verdade, o problema ocorre se uma fórmula for gravada em uma célula e gerar aquela janela pop-up que diz "Encontramos um problema com esta fórmula..." Não é o mesmo que #NOME?, #VALOR! , #N/D erros de tipo. No meu caso, meu código definiu um intervalo em uma tabela chamada MainTable e um dos cabeçalhos da coluna era Custo Efetivo. O código definiu uma fórmula como uma string referenciando MainTable[Cost], que deveria ser MainTable[Custo Efetivo].
O vba irá gerar um erro de tempo de execução, o sub irá parar e a string do problema nunca será enviada para a célula. O código a seguir interromperá um sub. (o "(" extra dará erro de fórmula da janela pop-up)
Range("A1").Value = "=Sum((B2:B4)"
O código a seguir funciona ininterruptamente, embora forneça um #NAME? erro na célula A1.
Range("A1").Value = "=Sum(PotatoSalad)"
Também fiz um teste rápido com uma série de strings. Armazenar fórmulas em strings dentro de uma matriz parece contornar o problema de interrupção do código, pois as fórmulas não serão avaliadas até serem atualizadas. Esta questão entra em mais detalhes sobre o que acontece ao usar uma matriz para despejar fórmulas nas células - Resumindo, usar uma matriz variante fará com que as fórmulas avaliem e interrompam a sub.https://stackoverflow.com/questions/19238844/strange-behavior-when-assigning-a-vba-array-to-formulas-of-an-excel-range
O código a seguir funcionará até que a célula A1 seja forçada a recalcular.
Dim MyArray(0 to 0) as String MyArray(0) = "=Sum((B2:B4)" Range("A1").Value = MyArray()
Passar o mesmo array como uma variante gerará um erro de tempo de execução.