现在的主要问题是,怎样才能把计算结果返回给调用这个函数的公式呢?
REM 求N日平均值
Function xMAN(Formula,N)
'创建窗格对象xGrid
Set xGrid=UserFrame1.GetGridByName("Window1")
'创建历史数据对象xHistoryData
Set xHistoryData=xGrid.GetHistoryData()
'如果历史数据存在问题
If xHistoryData.Count <N Then
MsgBox "参数超出可用数据范围!。。。"
Exit Function
End If
Dim i,j,xCount,xArray,y
xCount=0
Set xArray=CreateObject("Stock.Array")
'通过两个For...Next循环来求N日平均
'外循环
For i=0 To xHistoryData.Count-1
xCount=0
'内循环
For j=0 TO N
'----------------
If i>=N Then
y=i-j
xCount=xCount+xHistoryData.Close(y)
Else
Exit For
End If
'----------------
Next
xCount=xCount/N
xArray.AddBack(xCount)
'向调用该函数的公式返回结果
'MsgBox "数组值是:"&xArray.GetAt(i)
'xMan=xArray.GetAt(i)
Next
'MsgBox xArray.Count
'xMAN=xArray.Count
'得到公式对象
Set xGrid_1=UserFrame1.GetGridByName("Window5")
Set xFormula=xGrid_1.GetFormulaByName("XMAN")
Set xGetFormulaData=CreateObject("Stock.Array")
xGetFormulaData = xFormula.VARDATA("ccc")
Call Stock.Array.Copy(xArray,xGetFormulaData,xArray.Count)
'把数组值返回给公式对象的公式线:VVV
xFormula.VarData("vvv") = xGetFormulaData '将处理完毕得数组序列返回公式中
End Function