Excel VBAfunction错误
我在模块中写这个代码:
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
它给出了某些值的错误:
哪里有问题?
我很确定你的意图是评估Sin(x)
,其中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
。
当x是7时 , Sin(x)
等于0.656986598718789 。
当你把这个插入公式1 - 2 * Sin(x)
,你会得到-0.313973197437578 。
你不能取一个负数的平方根(即Sqr(...)
)。 我build议添加Abs(...)
作为包装,以保证一个正数,但我不知道你最终试图完成什么。