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.Value2
或 a.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
瞧!
我在 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.Value2
或 a.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
瞧!