作者weast (kuan)
看板Visual_Basic
标题[VBA ] 函数未定义
时间Tue Jun 16 15:33:48 2009
这是我写的一段程式
但写完之後执行却显示我的副程式未定义 我想请问是哪里出问题了?
Option Explicit
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'XXX
'XXX VBA assignment 0853218
'XXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Public Type DSinput
X As Double 'X represents the warrant's strike price
S As Double 'S represents the current share price
T As Double 'T represents the warrant's maturity date
rf As Double 'rf represents the riskless rate
sigma As Double 'sigma represents the volatility of the stock
MW As Double 'M represents the number of warrant, while W represents the fair market value per warrant
N As Double 'N represents the number of share the firm currently issues
End Type
Public Sub main()
Dim jk As DSinput
jk.X = Cells(5, 11).Value
jk.S = Cells(5, 6).Value
jk.T = Cells(6, 6).Value
jk.rf = Cells(7, 6).Value
jk.sigma = Cells(8, 6).Value
jk.MW = Cells(13, 6).Value
jk.N = Cells(14, 6).Value
Call BSmodel_Call_Warrant(jk)
End Sub
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
'XXX
'XXX Black-Scholes models for computing call price and analogous warrant value
'XXX
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Private Function BSmodel_Call_Warrant(ByRef jk As DSinput) As Double
Dim PV_X As Double: PV_X = jk.X * Exp(-jk.rf * jk.T)
Dim sigma_sqrT As Double: sigma_sqrT = jk.sigma * Sqr(jk.T)
Dim d1 As Double: d1 = (Log(jk.S / PV_X) / sigma_sqrT) + (sigma_sqrT / 2)
Dim d2 As Double: d2 = d1 - sigma_sqrT
Dim C_BS As Double: C_BS = jk.S * Application.NormSDist(d1) - PV_X * Application.NormSDist(d2)
Dim M As Double: M = jk.MW / (C_BS * jk.N - jk.MW)
Dim W As Double: W = jk.MW / M
cell(9, 6).Value = C_BS
cell(11, 6).Value = M
cell(12, 6).Value = W
End Function
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.90.193
1F:→ MOONRAKER:你把function当作sub用了 06/16 16:30
2F:推 Peruheru:你宣告了Function却没有给它传回值 06/16 17:15
3F:→ weast:喔 我懂了~~ 06/16 23:19