2017-03-21 5 views
0

Ich versuche Excel FORECAST.ETS von VBA in meinem Access-Projekt zu nennen, aber es scheint so, egal, was ich tue ich diesen Fehler:function.ets aus Access VBA Aufruf Excel

"VBA Error 1004 Invalid number of arguments."

Hier ist, was Ich mache -

'********************************************** 
Public Sub testFCsof() 

Dim testrfXL As Object 

Dim testrfNowDate As Date 
Dim testrfempSQLStr As String 
Dim testrfempSQLRS As DAO.Recordset 

Dim testrfRecNo As Integer 

Dim testrfDateARRAY() As Date 
Dim testrfPointsARRAY() As Double 

Dim testrfFDFCAST As Double 
Dim fdtestempID As Long 

On Error GoTo Err_testrfNBA 

Set todaysDB = CurrentDb() 

fdtestempID = 382 

testrfFDFCAST = 1000000 

testrfempSQLStr = "SELECT NBAFANempPER.eventTime, NBAFANempPER.FDpoints " & _ 
      "FROM NBAFANempPER WHERE ((NBAFANempPER.empID)= " & fdtestempID & ") ORDER BY NBAFANempPER.eventTime;" 

Set testrfempSQLRS = todaysDB.OpenRecordset(testrfempSQLStr, dbOpenDynaset, dbSeeChanges, dbReadOnly) 

If Not (testrfempSQLRS.BOF And testrfempSQLRS.EOF) Then 'only do this if we have records 

testrfempSQLRS.MoveLast 

ReDim testrfDateARRAY(testrfempSQLRS.RecordCount - 1) 
ReDim testrfPointsARRAY(testrfempSQLRS.RecordCount - 1) 

testrfempSQLRS.MoveFirst 

testrfRecNo = 0 

Do While Not testrfempSQLRS.EOF 

    testrfDateARRAY(testrfRecNo) = CDate(dateHeadFunk(CDate(testrfempSQLRS!eventTime))) 
    testrfPointsARRAY(testrfRecNo) = CDbl(testrfempSQLRS!FDpoints) 

    testrfRecNo = testrfRecNo + 1 

    testrfempSQLRS.MoveNext 
Loop 

Set testrfXL = CreateObject("Excel.Application") 

testrfNowDate = Now() 

testrfFDFCAST = testrfXL.WorksheetFunction.Forecast.ets(Arg1:=testrfNowDate, Arg2:=testrfPointsARRAY, Arg3:=testrfDateARRAY, Arg4:=0, Arg5:=1, Arg6:=5) 

Set testrfXL = Nothing 

End If 


Exit_testrfNBA: 

Erase testrfPointsARRAY 
Erase testrfDateARRAY 
testrfNowDate = Empty 

testrfempSQLStr = "" 

If Not testrfempSQLRS Is Nothing Then 
    testrfempSQLRS.Close 
    Set testrfempSQLRS = Nothing 
End If 

Exit Sub 


Err_testrfNBA: 

    MsgBox "Got a sucky forecast number back.." 

generic.TestODBCErr 

Resume Exit_testrfNBA 

End Sub 
'********************************************** 

Die Arrays füllen sich gut, beide die gleiche Größe.
Ich kann andere Excel-Funktionen ohne ein Problem aufrufen.
Ich kann nicht herausfinden, was das Problem sein könnte. Ich habe es mit und ohne die "Arg =" - Tags versucht, mit und ohne die letzten drei optionalen Argumente, habe versucht, die Arrays mit Array (myArray) zu umhüllen, sogar die Arrays auf Variant zu setzen.

Antwort

0

Zumindest in Excel VBA ist der Funktionsname Forecast_ETS, nicht Forecast.ETS.

+0

ja seine Forecast_ETS in Excel VBA, aber sollte es eine Fehlerfunktion oder Prozedurdefinition nicht foundor oder etwas ähnliches gegeben haben –

+0

Danke. Ich habe Forecast_ETS in gesteckt, aber habe - "Die Forecast_ETS-Eigenschaft der WorksheetFunction-Klasse konnte nicht abgerufen werden". – tomkoel

+0

Vielen Dank! Ich änderte den Namen in Forecast_ETS und bekam dies - Die Forecast_ETS-Eigenschaft der WorksheetFunction-Klasse konnte nicht abgerufen werden. Ist das ein "besserer" Fehler als "Ungültige Anzahl von Argumenten"? – tomkoel

Verwandte Themen