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

标签 vba excel

我正在尝试编写一个简单的 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 Test()

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

 ans = IsG10(TC)

End Sub

我已经尝试了很多方法来使其工作,删除了错误处理,返回字符串而不是 bool 值...没有任何效果。我看不到任何明显的 UDF 错误。

谢谢!

最佳答案

您需要重命名您的函数。 ISG10 是有效的单元格地址,因此当您将公式放入 =ISG10(A1) 等单元格中时,Excel 无法正确解析它。当我将其更改为 Function Foobar(Cur As Range) As Boolean 时,它工作得很好。

关于vba - 用户定义的函数在工作表中返回#REF,在 VBA 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873519/

相关文章:

swift - 使用 + Sign Swift 4 保存 CSV

excel - Excel中300万行端口数据来自txt

excel - 根据下拉列表更改数据透视表过滤器

excel - 在 Excel 中使用 VBA 在 Word 中设置范围

excel - 一些但不是所有 Excel 数字都显示为日期

php - 如何使用 Tiny But Strong 的 Excel 插件合并多个 Excel 文档?

vba - VBA 中使用 KDB+/qodbc.dll 的 ADO

vba - 过滤列表的算法

vba - excel日期格式与vba中的不一样

excel - 从 Excel 中的列范围动态提取唯一值列表?