2011-12-16 97 views
3

皆、私は奇妙な問題を抱えています。助けてください。WorksheetFunctionのMMultプロパティを取得できません

エラーメッセージは次のとおりです。

WorksheetFunctionクラス

1のMMultプロパティを取得することができません、私はプログラムを使っエラー '1004' ランタイム名前は "schedule"で、毎日私のVBAプログラムを自動的に実行しますが、VBAプログラムは毎日失敗しますが、私の "スケジュールプログラム"自動的にこのエラーを再現しようとするためにそれを実行するには、私はそれを得ることができない、それは滑らかに実行されます。

2、このエラーが発生したときに、Excelが[終了] [デバッグ]ウィンドウが表示されます、私は[デバッグ]をクリックして、それがスムーズに実行し、[F5]を押してください。 MMultのパラメータが正しくない場合、エラーを再度表示することを前提としています。

3、私はmmultで使用しているデータをダンプするために、エラーが発生し、エラーは発生しません。

だから、私はmmultの2つのパラメータが正しいと思いますが、毎日エラーメッセージが表示されるのはなぜですか?

この最も難しいのはこのエラーを再現することです。

コード:

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 
. ...... 

ウィンドウ7のホームpreminum 64ビット

オフィス2010プロの64ビット/ 32ビットSP1

+1

あなたはデバッガが、私はあなたが何を言っているかわからない –

+0

を強調したコードの行を貼り付けることができます。正確なエラー(番号とメッセージ)は何ですか? – Fionnuala

+0

デバッグをクリックすると、問題のある行が黄色で表示されます。 –

答えて

0

私は私のOSとオフィスを再インストールしているあなたのエラーを取得しているところ、これは、それは今も元気に動作していると思います。

0

てみような範囲でありますこの。私はあなたが

temp = Application.WorksheetFunction.MMult(xtrans, 
Application.Transpose(X)) 
+0

MMultを実行する前にTranspose()を実行しました。私が言ったように、エラーは毎回発生しません。同じデータで再度実行しようとすると、問題はありません。 – user1102715

+0

私はその行を削除するか、それらの行をコメントアウトし、両方ともこれでうまくいくはずです。 –

+0

私が言ったように、エラーは毎回発生しません。同じデータで再度実行しようとするとエラーは発生しません。 – user1102715

0

私は同じ問題を抱えていました。しかし、それは鉱山が次元問題によって引き起こされたことが判明しました。

私がやった:

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) 
関連する問題