2011-12-16 5 views
3

모두에게 이상한 문제가 있습니다. 제발 도와주세요.WorksheetFunction의 MMult 속성을 가져올 수 없습니다.

오류 메시지는 다음과 같습니다

WorksheetFunction 클래스

1의 MMult 속성을 가져올 수 없습니다, 나는이 프로그램을 사용하여 오류 '1004'런타임 이름은 "schedule"이며 매일 자동으로 VBA 프로그램을 실행하지만 VBA 프로그램은 매일 실패하지만 "일정 프로그램" 자동으로 다시 실행하여이 오류를 재현하려고 시도 할 수 없으며 원활하게 실행됩니다.

2

이 오류가 발생하면 Excel이 표시됩니다 [끝] [디버그] 창, 나는 [디버그]을 클릭하고 는 [F5], 그것은 부드러운 실행 누르십시오; MMult에 대한 매개 변수가 올바르지 않으면 다시 오류를 보여줍니다.

3, 나는 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 
. ...... 

윈도우 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) 

I (1 OBS) 코드 작동하도록 재정의하십시오 Y 했어야하지만.

그래서 :

Redim Y(obs,1) 
Redim X(obs,3) 
Xtransposed = Application.worksheetfunction.transpose(X) 
MMult = Application.worksheetfunction.mmult(Xtransposed, Y) 
관련 문제