2
我想创建一个函数,具有BESSELK函数作为参数。我发现fordom.free.fr此代码:函数集成贝塞尔函数
Option Explicit
Function F(ByVal Equation As String, Optional ByVal X As Variant = 0) As Double
'Evaluates f(x) at position x
'Uppercase
Equation = UCase(Equation)
With WorksheetFunction
'avoid mixing up EXP with exp and X
Equation = .Substitute(Equation, "EXP", "exp")
'set value X instead of letter X
Equation = .Substitute(Equation, "X", X)
'converts comas into points
Equation = .Substitute(Equation, ",", ".")
'Changes)(with)*(
Equation = .Substitute(Equation, ")(", ")*(")
End With
'calculates expression
F = Evaluate(Equation)
End Function
和改性它考虑到2个参数:
Option Explicit
Function F(ByVal Equation As String, Optional ByVal X As Variant = 0, _
& **Optional ByVal Y As Variant = 0**) As Double
'Evaluates f(x) at position x
'Uppercase
Equation = UCase(Equation)
With WorksheetFunction
'avoid mixing up EXP with exp and X
Equation = .Substitute(Equation, "EXP", "exp")
'set value X instead of letter X
Equation = .Substitute(Equation, "X", X)
**'set value Y instead of letter Y
Equation = .Substitute(Equation, "Y", Y)**
'converts comas into points
Equation = .Substitute(Equation, ",", ".")
'Changes)(with)*(
Equation = .Substitute(Equation, ")(", ")*(")
End With
'calculates expression
F = Evaluate(Equation)
End Function
当我尝试F( “X + Y”; 5; 2) ,它返回7,这是没问题的。然而,当我尝试 F(“BESSELK(X; Y)”; 5; 1),它给我一个#VALUE错误
我的文档中检查和变量类型或从贝塞尔函数的两个参数确实是“Variante”。
我真的不明白为什么这里出错了!我也尝试了一个更简单的函数F(“POWER(x; y)”; 5; 2),但它也给我一个#VALUE错误。
任何帮助都比欢迎!非常感谢你。
非常感谢您的回答。我试图用大写字母设置BESSELK函数中的变量,但它没有改变任何东西,仍然存在#VALUE错误。感觉参数X和Y没有链接到BESSELK函数。 – MaximeS
在我为我的语言环境更改它之后,没有您的代码适用于我(删除了公式中的'Equation = .Substitute(Equation,“,”,“。”)'并且使用了逗号而不是分号)。 BESSELK应该也能工作。您的区域设置是什么? –
你试过'= F(“POWER(x; y)”; 5; 2)'? –