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)'? –