VBA, UDF 中不带引号的字符串参数 - 如何访问它们的值?

VBA, string arguments in UDF that does not have quotation marks - how to access their value?

我在 VBA 中的函数是:

Function myFunc(a)
    myFunc = a    
End Function

当我以这种方式在 Excel sheet 中使用此函数时 =myFunc("abc"),它可以工作,但是当我使用不带双引号的公式时 =myFunc(abc),然后我收到错误 #NAME?

尝试将参数从 Function myFunc(a) 更改为 Function myFunc(chr(34) & a & chr (34) ) 会导致错误 Expected: )

如何访问在 UDF(用户定义函数)中键入的不带引号的值?

更新:我需要它来简化最终用户对 UDF 的使用。

如果不带引号使用它,excel 需要一个命名范围。如果您想要从另一个单元格中获取内容,则应将参数定义为 myfunction(a as Range),然后使用 a.Value2a.Text.

获取其值

我不知道你为什么需要这样的东西。 但有可能!阅读有关 Application.Caller - UDF 是 运行 的 rng。

 Private Function myFuncCalc(ByVal xstr As String)
 ' it is your main function to calculate what you want
 ' just sample code to test below
   If xstr = "USD" Then
    myFuncCalc = "yes it's american dollar!"
   Else
    myFuncCalc = "it's no american dollar"
   End If
 End Function

 Function myFunc(a)
 ' function just to be available in worksheet
 ' and extracting currency letter codes from formula between brackets
   bra1 = InStr(Application.Caller.Formula, "(")
   bra2 = InStr(Application.Caller.Formula, ")")
   x = Mid(Application.Caller.Formula, bra1 + 1, bra2 - bra1 - 1)
   myFunc = myFuncCalc(x)
 End Function

瞧!