2015-09-04 59 views
3

以下函數從彭博社獲得一份報價。
當從Sub過程調用該函數時,該函數可以工作,但不能用作工作表公式。有誰知道爲什麼?
#值錯誤,但在VBA中工作

Public Function GetRatesSTATIC() As Variant 
    Application.DisplayAlerts = False 
    Dim objBK As Workbook 
    Dim objRng As Range 
    'Open the page as a workbook. 
    Set objBK = Workbooks.Open("http://www.bloomberg.com/quote/EURUSD:CUR") 
    'Find the Rate 
    Set objRng = objBK.Worksheets(1).Cells.Find("EURUSD:CUR") 
    'Retrieve the exchange rate. 
    GetRatesSTATIC = objRng.Offset(1, 0).Value 
    objBK.Close savechanges:=False 
    Application.DisplayAlerts = True 
End Function 
+0

它不能用作公式,因爲使用一個公式,您可以執行'= FuncTest(A1)'它運行'Cell A1'中的值提供的函數,您的函數不會收到任何它只提供的內容。 – DragonSamu

+0

當它變成一個函數時它看起來像什麼?你有沒有把它看作宏觀的一部分? – BruceWayne

+1

@BruceWayne您所看到的代碼僅用於VBA中的函數,或稱爲公式。 OP的問題是他沒有收到任何價值,因爲函數沒有要求它,而這對於公式函數是強制性的。 – DragonSamu

回答

3

根據該knowledge base article,的功能的限制是它們不能「執行大多數方法」,所以調用Workbook.Open方法可能不允許。在我的手中,你的函數在VBA中工作不正常,而在工作表中調用時則根本不工作。

相關問題