BESSELK関数をパラメータとして持つ関数を作成しようとしています。私はfordom.free.fr上でこのコードが見つかりました:besselk関数を統合する関数
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エラーが出る
Bessel関数のドキュメントと変数の型または2つの引数をチェックしました。確かに "バリアント"です。
なぜここで間違っているのか分かりません!私も簡単な関数F( "POWER(x; y)"; 5; 2)で試しましたが、#VALUEエラーも出ます。
どのようなヘルプも歓迎です!どうもありがとうございました。
ありがとうございます。私は大文字でBESSELK関数内の変数を設定しようとしましたが、何も変わらず、#VALUEエラーがあります。パラメータXとYがBESSELK関数にリンクされていないように感じます。 – MaximeS
私のロケールのために変更した後で、あなたのコードは私のために働いていませんでした( 'Equation = .Substitute(Equation、"、 "、"。 ")'行を削除し、式にセミコロンの代わりにコンマを使用しました)。 BESSELKも同様に機能するはずです。あなたのロケール設定は何ですか? –
'= F(" POWER(x; y) "; 5; 2)'を試しましたか? –