2017-10-04 118 views
0

我寫這篇文章的代碼模塊中:Excel的VBA函數錯誤

Public Function first() 
If (x + 1 < 0) Or (1 - 2 * Sin(x) < 0) Or Sqr(1 - 2 * Sin(x)) = 0 Then 
first = "error" 
Else 
first = Sqr(x + 1)/Sqr(1 - 2 * Sin(x)) 
End If 
End Function 

它使某些數值的錯誤:

enter image description here

問題出在哪裏?

+1

爲什麼不能說明問題是什麼?這些「某些價值」是什麼?另外 - 什麼是'x'?你不是*傳遞*'x'作爲參數很奇怪。全局變量往往不是設計缺陷。 –

+1

當'的sin(x)'是0.5(30度...?)然後'SQR(1 - 2 *的sin(x))'是零,你不能除以零。 – Jeeped

+0

在上下文中,'x' *必須*是函數的參數。看起來他們從立陶宛語翻譯它(?)(其中「pirma」的意思是「第一」),並可能只是下降,從參數的'x'。 –

回答

0

X是,Sin(x)等於0.656986598718789

當您將此插入公式1 - 2 * Sin(x)時,您將獲得-0.313973197437578

無法拍攝的平方根(即Sqr(...))負數的。我建議增加Abs(...)爲包裝,以保證一個正數,但我不知道你最終要完成的。

1

我敢肯定你的意圖就是x進行測量,以評估Sin(x)(如果沒有其他原因,比在弧度這比0是相當罕見的其他整數評估),但功能Sin(x)適用於弧度。您可以使用該功能Randians()解決這個問題:

Public Function first(ByVal x As Double) As Double 
    x = Application.Radians(x) 
    If (x + 1 < 0) Or (1 - 2 * Sin(x) < 0) Or Sqr(1 - 2 * Sin(x)) = 0 Then 
     first = "error" 
    Else 
     first = Sqr(x + 1)/Sqr(1 - 2 * Sin(x)) 
    End If 
End Function 

然後,例如,first(7)計算結果爲1.218130941