【发布时间】:2016-04-09 00:12:49
【问题描述】:
这是一个简单的股票价格变化代码 我的代码是函数(带参数)
Function VanillaCall(S0 As Single, Exercise As Single, Mean As Single, sigma As Single, _
Interest As Single, Time As Single, Divisions As Integer, Runs As Integer) As Single
deltat = Time / Divisions
interestdelta = Exp(Interest * deltat)
up = Exp(Mean * deltat + sigma * Sqr(deltat))
down = Exp(Mean * deltat - sigma * Sqr(deltat))
pathlength = Int(Time / deltat)
piup = (interestdelta - down) / (up - down)
pidown = 1 - piup
Temp = 0
For Index = 1 To Runs
upcounter = 0
For j = 1 To pathlength
If Rnd > pidown Then upcounter = upcounter + 1
Next j
callvalue = Application.Max(S0 * (up ^ upcounter) * (down ^ (pathlength - upcounter)) - Exercise, 0) / (interestdelta ^ pathlength)
Temp = Temp + callvalue
Next Index
VanillaCall = Temp / Runs
End Function
参数从 excel 中的单元格传递。 我想通过单击按钮执行此功能并在单元格中显示返回值,例如 b12。 我尝试将代码放在按钮 sub 中,但它不起作用,sub 内部的调用 vanillacall 也不起作用。 喜欢..
private sub button1_click()
call vanillacall
end sub
【问题讨论】:
-
当你在 button1_click() 中调用 vanillacall 函数时,你必须传递所有必要的参数。
-
我认为这行不通,因为您必须将
=VanillaCall()放在一个单元格中并传递必要的参数。您可以通过从宏调用该函数来传递参数,但是您必须在该宏本身中定义要输出结果的位置。 -
但我的论点来自在运行函数时选择的 Excel 中的一个单元格
-
@user2997767 是的,但是在宏中的任何地方,您都没有定义输出在电子表格中的位置。如果你使用
private sub button1_click() call vanillacall Msgbox Vanillacall end sub你就能看到结果 -
喜欢在 range("b12").vanillacall?不工作