无法获取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)