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

x7时Sin(x)等于0.656986598718789

当你把这个插入公式1 - 2 * Sin(x) ,你会得到-0.313973197437578

你不能取一个负数的平方根(即Sqr(...) )。 我build议添加Abs(...)作为包装,以保证一个正数,但我不知道你最终试图完成什么。