无法获取WorksheetFunction的MMult属性
大家,我有一个奇怪的问题,请帮助。
错误信息是:
运行时错误“1004”
无法获取
WorksheetFunction
类的MMult
属性
1,我使用的程序名是“ schedule
”来每天自动运行我的VBA程序,但是VBA程序每天都会失败,但是当我控制我的“schedule program”来自动运行它来重现这个错误时,我可以不明白,它运行平稳。
2,出错时,Excel显示[结束] [debugging]窗口,点击[debugging] ,按[F5] ,运行平稳; 如果MMult的参数不正确,它会再次显示错误。
3,我已经写了一个sub转储在mmult
中使用的数据,它在发生错误和没有错误时是一样的。
所以,我可以假设mmult
的两个参数是正确的,但是为什么每天都收到错误信息呢?
这个最难的事情是很难重现这个错误。
码:
Public Function Regression(ByVal X As Variant, ByVal y As Variant) writelog ("Regression") writelog ("dump x") Call dumpRange(X, 2) writelog ("dump y") Call dumpRange(y, 1) Dim xtrans, temp, temp2, b xtrans = Application.WorksheetFunction.Transpose(X) temp = Application.WorksheetFunction.MMult(xtrans, X) ' occour error on this line temp = Application.WorksheetFunction.MInverse(temp) temp2 = Application.WorksheetFunction.MMult(xtrans, y) b = Application.WorksheetFunction.MMult(temp, temp2) Regression = b End Function
X是一个这样的范围
1 0.34343323 1 1.32323323 1 1.21111221 1 0.33444232 . ......
Window 7家庭预科64位
Office 2010专业版64位/ 32位sp1
尝试这个。 我认为这是你得到你的错误的地方
temp = Application.WorksheetFunction.MMult(xtrans, Application.Transpose(X))
我已经重新安装了我的操作系统和办公室,现在工作正常。
我有同样的问题。 但事实certificate,我是由维度问题引起的。
我做了:
Redim Y(obs) Redim X(obs,3) Xtransposed = Application.worksheetfunction.transpose(X) MMult = Application.worksheetfunction.mmult(Xtransposed, Y)
虽然我应该做Redim Y(obs,1)来使代码工作。
所以:
Redim Y(obs,1) Redim X(obs,3) Xtransposed = Application.worksheetfunction.transpose(X) MMult = Application.worksheetfunction.mmult(Xtransposed, Y)