Thema Datum  Von Nutzer Rating
Antwort
Rot YearFrac Problem?
03.01.2015 11:46:41 Alex
NotSolved
03.01.2015 15:53:12 Gast86593
NotSolved
03.01.2015 22:51:52 Alex
NotSolved
04.01.2015 15:10:11 Gast86593
NotSolved
05.01.2015 11:14:10 Alex
NotSolved

Ansicht des Beitrags:
Von:
Alex
Datum:
03.01.2015 11:46:41
Views:
1117
Rating: Antwort:
  Ja
Thema:
YearFrac Problem?

Hallo zusammen

Ich bin relativ neu im VBA Universum und mache zur Zeit ein paar Tests um die Materie besser zu verstehen.
Ich habe mir entsprechend Übungstabellen runtergeladen, nun bin ich bei einer auf ein Problem gestossen und zwar kriege ich immer den Fehler; "Compile Error: Sub or Function not defined".

Die VBA Addins sind geladen sowie auch atpvbaen.xls. Ich habe jedoch das Gefühl (ich weiss hilft wenig), dass es an der Funktion yearfrac() liegt.

Kann jemand bei den folgenden Zeilen den Fehler herausfinden?
 

Function Bprice(pricedate, matdate, Coupon, r, freq)


'Inputs:

'.....................................................................................
'pricedate: pricing date;
'matdate:   maturity date;
'Coupon:         coupon rate, in percentage;
'r:         yield to maturity, r=ir+cs;
'freq:      payment frequency: annual: 1; semmi-annual: 2; quarterly: 4; monthly: 12;


Dim i As Integer

t = YearFrac(pricedate, matdate)
r = Log(1 + r)

Bprice = 100 * Exp(-r * t)

If Coupon > 0 Then
NumC = WorksheetFunction.Ceiling(t * freq, 1)
For i = 1 To NumC
ti = (t - (i - 1) / freq)
Bprice = Bprice + Coupon / freq * Exp(-r * ti)
Next i
End If

End Function

 


Sub CBall()

Dim Bond, Stock, PriceInfo, Output, calld, callp, putd, putp, calldata, callprice, putdate, putprice As Range
Dim pricedate, matdate, FaceValue, cratio, Coupon, freq, S, Div, vol, ir, cs, step, softcall As Double


Set Bond = Range("B8")
Set Stock = Range("B17")
Set PriceInfo = Range("B23")
Set Output = Range("F4")
Set calld = Range("E15")
Set callp = Range("F15")
Set putd = Range("H15")
Set putp = Range("I15")

pricedate = Range("B4").Value

matdate = Bond.Value
FaceValue = Bond.Offset(1, 0).Value
cratio = Bond.Offset(2, 0).Value
Coupon = Bond.Offset(3, 0).Value
freq = Bond.Offset(4, 0).Value

S = Stock.Value
Div = Stock.Offset(1, 0).Value
vol = Stock.Offset(2, 0).Value

ir = PriceInfo.Value
cs = PriceInfo.Offset(1, 0).Value
step = PriceInfo.Offset(2, 0).Value

softcall = Range("F12").Value

If IsEmpty(calld) Then
Set calldate = calld
Else
Set calldate = Range(calld, calld.Offset(-1, 0).End(xlDown))
End If

If IsEmpty(callp) Then
Set callprice = callp
Else
Set callprice = Range(callp, callp.Offset(-1, 0).End(xlDown))
End If

If IsEmpty(putd) Then
Set putdate = putd
Else
Set putdate = Range(putd, putd.Offset(-1, 0).End(xlDown))
End If

If IsEmpty(putp) Then
Set putprice = putp
Else
Set putprice = Range(putp, putp.Offset(-1, 0).End(xlDown))
End If

Output.Value = CBprice(pricedate, matdate, FaceValue, cratio, Coupon, freq, S, Div, vol, ir, cs, step, calldate, callprice, softcall, putdate, putprice)
Output.Offset(1, 0).Value = CBdelta(pricedate, matdate, FaceValue, cratio, Coupon, freq, S, Div, vol, ir, cs, step, calldate, callprice, softcall, putdate, putprice)
Output.Offset(2, 0).Value = Bprice(pricedate, matdate, Coupon, ir + cs, freq)
Output.Offset(3, 0).Value = cratio * S / FaceValue * 100





End Sub

 

Für eure Hilfe bedanke ich mich herzlichst.

Alex


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot YearFrac Problem?
03.01.2015 11:46:41 Alex
NotSolved
03.01.2015 15:53:12 Gast86593
NotSolved
03.01.2015 22:51:52 Alex
NotSolved
04.01.2015 15:10:11 Gast86593
NotSolved
05.01.2015 11:14:10 Alex
NotSolved