Erro em tempo de execução '1004';

1

Eu estava tentando copiar a fórmula de N39 até a última linha, mas estou sempre recebendo um erro de tempo de execução '1004', consulte esta linha:

n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"")"

No entanto, quando tentei alterar a fórmula para algo mais simples, como = L39-K39, o código funciona bem.

Gostaria de receber ajuda para solucionar meu código.

Aqui está o meu código

Sub FillDownFormula()
Dim LastRow As Long
Dim n As Range

LastRow = Cells(Rows.Count, "I").End(xlUp).Row

Set n = Range("N39:N" & LastRow)
n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"")"

Set n = Nothing

End Sub

obrigado.

    
por Snippet Tee 27.02.2015 / 16:09

2 respostas

1

Existem alguns erros de sintaxe na sua fórmula.

Um deles é o "" usado como seu falso valor de retorno está finalizando sua string n.formula antecipadamente.

Quando você quiser usar aspas duplas ( " ) dentro de uma string delimitada por aspas duplas, você precisa escapar das aspas internas dobrando-as.

Ex:

myString = "This is a "string"." - falharia ou, na melhor das hipóteses, myString conteria This is a .

Corrigido por escapar das aspas:

myString = "This is a ""string""." - conterá This is a "string". .

Além disso, seu valor de retorno verdadeiro para o primeiro IF é outra instrução IF. Essa instrução IF interna tem suas próprias vírgulas para separar as partes, mas como você não encapsulou essa instrução, o Excel pode / pensará que suas vírgulas são parte da declaração IF externa.

Portanto, encapsule esse IF interno com colchetes.

Aqui está a fórmula corrigida (não a testamos com dados, mas passa a depuração agora):

=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE, (IF(ISNUMBER(M39), (K39-L39)*M39, (K39-L39))), """")
    
por 27.02.2015 / 16:26
1

Você deve duplicar o nas :

n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"""")"
    
por 27.02.2015 / 16:26