2017-03-21 93 views
0

我想打電話從VBA Excel的FORECAST.ETS在我訪問項目,但它似乎是不管我做什麼,我得到這個錯誤:從Access調用Excel的function.ets VBA

"VBA Error 1004 Invalid number of arguments."

這裏是我在做 -

'********************************************** 
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 
'********************************************** 

數組填滿就好,兩個大小相同。
我可以調用其他Excel函數沒有問題。
找不出問題所在。我試過這個,沒有「Arg =」標籤,有和沒有最後三個可選參數,嘗試用Array(myArray)包裝數組,甚至將Arrays設置爲Variant。

回答

0

至少在Excel VBA中,函數名稱是Forecast_ETS,而不是Forecast.ETS。

+0

是的,它的Forecast_ETS在Excel VBA中,但是它應該給出一個錯誤函數或過程定義沒有找到類似的東西 –

+0

謝謝。我插入了Forecast_ETS,但得到了這個 - 「無法獲得WorksheetFunction類的Forecast_ETS屬性」.. – tomkoel

+0

謝謝!我將名稱更改爲Forecast_ETS並獲取了此名稱 - 無法獲取WorksheetFunction類的Forecast_ETS屬性。這是比「無效的參數數量」更好的錯誤嗎? – tomkoel