2017-01-10 90 views
0

在excel-vba中,如何將參數傳遞給期望相同參數的函數?我一直在四處尋找,但似乎無法找到這個特定問題將參數傳遞到需要參數的函數中

我的代碼看起來像這樣的任何答案:

Sub test() 
    GetRefData "SPX Index", "PX_LAST", "PX_VOLUME", "PE_RATIO", "PX_TO_CASH_FLOW" 
End Sub 

Public Function GetRefData(security As String, ParamArray fields() As Variant) As String 
    Debug.Print fields(0) // returns "PX_LAST" 
    SendReq security, fields 
End Function 

Sub SendReq(security, ParamArray fields() As Variant) 
    Debug.Print fields(0) // returns type mismatch 
End Sub 
+0

我不確定你的問題是什麼。如果我刪除了在Sub測試中調用GetRefData的括號,那麼我可以在SendReq中放置一個斷點,並且fields參數有4個項目和期望的字符串值。 – DeanOC

+0

嗨,DeanOC,謝謝你的回覆。您是否在運行代碼時說這些代碼有效?例如,如果我在SendReq中使用'Debug.Print字段(0)',則VBA返回'類型不匹配'錯誤 –

+1

請參閱「將ParamArray變量傳遞給其他過程」:http://www.tushar- mehta.com/publish_train/xl_vba_cases/1005%20ParamArray.shtml –

回答

0

仰視the article Tim posted後,解決方案是參數數組必須訪問當作爲參數傳遞時更深一級,即:

Sub SendReq(security, ParamArray fields() As Variant) 
    Debug.Print fields(0)(0) 
End Sub