用户定义函数在工作表中返回#REF,在VBA中工作

我试图写一个简单的UDF告诉我货币代码是否是G10。 它工作正常,当我在VBA中的一个子testing它,但是当我尝试在电子表格中使用它,我得到了#REF。

Function IsG10(Cur As Range) As Boolean Dim G10s As Variant Dim Rslt As Boolean Dim Cross As Variant Cross = Cur.Value Rslt = False G10s = Array("USD", "GBP", "EUR", "CHF", "NOK", "SEK", "AUD", "NZD", "CAD", "JPY") If Not (Application.WorksheetFunction.IsText(Cross)) Or Len(Cross) > 3 Then IsG10 = CVErr(xlErrNA) Else For Each i In G10s If Cross = i Then Rslt = True Next i End If IsG10 = Rslt End Function 

这是我用来testing的Sub:

 Sub Test() Dim TC As Range Dim ans As Variant Set TC = Range("Y53") ans = IsG10(TC) End Sub 

我已经尝试了很多事情,使其工作,删除error handling,返回一个string,而不是一个布尔…没有任何工作。 我看不到任何明显的UDF错误。

谢谢!

你需要重新命名你的function。 ISG10是一个有效的单元格地址,因此,当您将公式放置在像=ISG10(A1)这样的单元格中时,Excel无法正确parsing它。 当我将其更改为Function Foobar(Cur As Range) As Boolean时它工作得很好。