#值错误,但在VBA中有效

#值错误,但在VBA中有效,vba,excel,Vba,Excel,以下函数从彭博社获取一条引文。 该函数在从子过程调用时起作用,但不是作为工作表公式。有人知道为什么吗? 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:

以下函数从彭博社获取一条引文。
该函数在从子过程调用时起作用,但不是作为工作表公式。有人知道为什么吗?

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

因此,函数的一个限制是它们不能“执行大多数方法”,因此可能不允许调用工作簿.Open方法。在我看来,您的函数在VBA中工作不稳定,从工作表调用时根本不起作用。

它不能作为公式工作,因为使用公式您可以
=FuncTest(A1)
它运行从
单元格A1提供值的函数
您的函数不会收到它只返回的任何内容。当您将其设置为函数时,它是什么样子的?您是否让它获取一个值并在宏部分使用它?@BruceWayne您看到的代码是仅在VBA中使用的函数,还是作为公式调用的函数。OP的问题是他没有收到任何值,因为函数没有请求它,而这对于公式函数SAH是必需的-我现在看到了。我的眼睛还没醒PWell,如果您试图在函数中添加一个变量,则会出现相同的#值错误。这就是为什么我创建了没有变量的静态函数来检查问题所在。