2017-04-04 2 views
2

Je tente de faire un calcul dans Excel VBA mais je reçois l'erreurFormulaR1C1 y compris variables - Erreur définie par l'application: Excel VBA

Application-Defined or Object-Defined Error

Voici le code que je tente d'exécuter. L'erreur se produit sur la ligne .FormulaR1C1 = ..., mais je ne sais pas pourquoi.

Function CalcNumDays() 
Dim d1 As Date, d2 As Date, NoofDays As Variant 
d1 = "01/01/2017" 
d2 = "03/01/2017" 

NoofDays = Application.WorksheetFunction.NetworkDays(d1, d2) 

With Sheets("ALL") 
    With .Range("K2:K" & .Cells(.Rows.Count, "A").End(xlUp).Row) 
     .FormulaR1C1 = "=IFERROR(SUM((RC[-8]+RC[-7]/RC[-4])*NoofDays,0)" 
     .Value = .Value 
    End With 
End With 

End Function 

Sample Data

+0

quelle ligne obtenez-vous l'erreur? et pouvez-vous poster une feuille d'échantillon ou même une image de la feuille d'échantillon – Miguel

+0

@Miguel - la ligne qui jette l'erreur est le .FormulaR1C1 - Je vais modifier pour inclure une image de données d'échantillon – BellHopByDayAmetuerCoderByNigh

+0

NoofDays doit avoir une signification dans la feuille de calcul et pas dans la variable pour travailler dans un FormulaR1C1 comme ça. check user3598756 answer – WNG

Répondre

2

essayer

.FormulaR1C1 = "=IFERROR(SUM(RC[-8]+RC[-7]/RC[-4])*" & NoofDays & ",0)" 
+0

C'est compris, merci! – BellHopByDayAmetuerCoderByNigh

+0

Vous êtes les bienvenus. Comme vous l'avez peut-être déjà fait, vous deviez "passer" la valeur réelle de "NoofDays" et vous aviez trop de parenthèses. Enfin, vous pouvez marquer la réponse comme acceptée. Je vous remercie! – user3598756

+1

Bonne chose ** noofdays ** n'était pas aussi un nom défini sur la feuille de calcul ou la formule originale aurait été acceptée! – Jeeped

1

Votre question est cette ligne:

.FormulaR1C1 = "=IFERROR(SUM((RC[-8]+RC[-7]/RC[-4])*NoofDays,0)" 

Vous souhaitez inclure la NoofDays variables, donc cela doit tomber en dehors de la chaîne, concaténer les cordes en utilisant une esperluette &

.FormulaR1C1 = "=IFERROR(SUM((RC[-8]+RC[-7]/RC[-4])*" & NoofDays & ",0)" 

Vous avez été portés disparus, un support pour mettre fin à la SUM, donc la correction finale est

.FormulaR1C1 = "=IFERROR(SUM((RC[-8]+RC[-7]/RC[-4])*" & NoofDays & "),0)" 
+0

-> votre suggestion donne la même erreur que ma syntaxe. – BellHopByDayAmetuerCoderByNigh

+0

@BellHop, voir mon edit – Wolfie