2015-09-04 56 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中工作不正常,而在工作表中调用时则根本不工作。

相关问题