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

时间:2016-08-10 12:31:30

标签: excel vba excel-vba

我正在尝试编写一个简单的UDF,告诉我货币代码是否为G10。当我在VBA中测试它时,它工作正常,但当我尝试在电子表格中使用它时,我得到#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

这是我用来测试的Sub:

Sub Test()

 Dim TC As Range
 Dim ans As Variant
 Set TC = Range("Y53")

 ans = IsG10(TC)

End Sub

我已经尝试了很多东西来使其工作,删除了错误处理,返回一个字符串而不是一个bool ......没有任何作用。我看不出任何明显的UDF错误。

谢谢!

1 个答案:

答案 0 :(得分:9)

您需要重命名您的功能。 ISG10是一个有效的单元格地址,因此当您将公式放在=ISG10(A1)这样的单元格中时,Excel无法正确解析它。当我将其更改为Function Foobar(Cur As Range) As Boolean时,它可以正常工作。