2014-04-18 12 views
0

Je pense que je me suis peut-être rendu aveugle sur ce problème. Ça ne devrait pas être si difficile.Fonctions de probabilités et parenthèses dans VBA

J'ai fait que tous les composants de l'équation fonctionnent séparément mais quelque chose ne fonctionne pas - mes déclarations de variables ou la fonction elle-même?

Pour l'instant, je suis juste essayer de l'obtenir à la sortie un numéro:/

cette fonction fonctionne très bien

Function d(K, a1, b1) 
d = (-Log(K) + a1 + b1 * b1)/b1 
End Function 

celui-ci ne fonctionne pas (les deux fonctions sont incluses dans le même module):

Function LN_Call(r As Double, t As Double, K As Double, w As Double, a1 As Double, b1  As Double, a2 As Double, b2 As Double) As Double 

Dim d1 As Double 
Dim d2 As Double 
Dim d3 As Double 
Dim d4 As Double 
Dim temp1 As Double 
Dim temp2 As Double 
Dim result As Double 

d1 = d(K, a1, b1) 
d2 = d1 - b1 
d3 = d(K, a1, b1) 
d4 = d3 - b2 

temp1 = Exp(a1 + b1 * b1/2) 
temp2 = Exp(a2 + b2 * b2/2) 

LN_Call = Exp(-r * t) * (w * (temp1 * Application.WorksheetFunction.NormSDist(d1) - K *  Application.WorksheetFunction.NormSDist(d2)) + (1 - w) * (temp2 * Application.WorksheetFunction.NormSDist(d3) - K *   Application.WorksheetFunction.NormSDist(d4))) 

End Function 

Pouvez-vous me dire ce qui ne va pas?

+0

comment exactement cela ne fonctionne pas? –

Répondre

0

Il est clair que la fonction d() ne définit pas votre ligne:

d1 = d(K, a1, b1) 

inclus, sauf dans le même module .

Si elle est incluse, puis:

=LN_Call(1,1,1,1,1,1,1,1) 

retours:

1,301699209

Est-ce résultat Ö.K?

+0

Merci - Je suppose que c'est mon entrée qui sont faux ... Un peu étrange cependant:/ – Mathias

+0

Postez vos entrées ...... peut-être que nous pouvons vous aider. –

Questions connexes