Function 编译错误,在VBA中找不到变量

Function 编译错误,在VBA中找不到变量,function,vba,Function,Vba,我有以下代码,我得到以下错误: 编译错误,未找到变量(无法找到j) 此外,即使我将MktVol作为长度为4的向量提供,消息框仍返回N=0 你能帮我纠正我的错误吗 Public Function EstimateAllParameters(params, MktStrike, MktVol, F, T, b) Dim R As Double, a As Double, V As Double, N As Integer Dim j as integer 'stops the compile err

我有以下代码,我得到以下错误:
编译错误,未找到变量
(无法找到j) 此外,即使我将MktVol作为长度为4的向量提供,消息框仍返回
N=0
你能帮我纠正我的错误吗

Public Function EstimateAllParameters(params, MktStrike, MktVol, F, T, b)
Dim R As Double, a As Double, V As Double, N As Integer
Dim j as integer 'stops the compile error but the function returns #VALUE! 
Dim ModelVol() As Double, sqdError() As Double
R = params(1)
V = params(2)
a = params(3)
N = MktVol.Length
MsgBox ("N= " & N)
For j = 1 To N
 ModelVol(j) = Svol(a, b, R, V, F, MktStrike(j), T)
  sqdError(j) = (ModelVol(j) - MktVol(j)) ^ 2
Next j
EstimateAllParameters = Sum(sqdError)
End Function
MktStrike
在单元格E5中具有以下值:E8

12
13
14
15
MktVol
在单元格F5中具有以下值:F8

0.234
0.236
0.242
0.249

明显的问题是J并没有被模糊

我会改变:

Dim R As Double, a As Double, V As Double, N As Integer


您没有在该代码中暗显
j
。还有,你到底在向MktVol传递什么?我试过了,它给了我“价值”!,因此,我试着不带它跑。我正在用传递给MktVolA
Range
对象没有
Length
属性的值更新我的初始帖子。也许你的意思是
MktVol.Cells.Count
?在填充数组的值之前,还需要将数组重新划分为正确的大小。而且
Sum
不是VBA函数,但是您可以使用
Application.Sum
来代替。@TimWilliams,谢谢,这确实是我想要做的。我还将重拨阵列。我已经提供了MatLab代码,需要将其转换为VBA。这两种语言我仍在学习过程中,因此我非常感谢您的建议。如果MktVol中的所有值都是正值,您可以使用
Application.Min(MktVol)
找到最小值,然后使用
Application.Match(v,MktVol,0)
找到该值(v)在MktVol中的位置
Dim R As Double, a As Double, V As Double, N As Integer, J as Integer