首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA有ATan2函数吗?

VBA有ATan2函数吗?
EN

Stack Overflow用户
提问于 2011-02-25 20:35:10
回答 4查看 22.5K关注 0票数 4

我想在VBA中计算atan2,但我不确定该函数是否存在(甚至不确定在哪里可以找到内置VBA函数的规范列表)。我没有使用Excel,所以不可能调用工作表。

我可以自己implement atan2,但如果可能的话,我宁愿避免这样做。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-25 21:12:33

也许这段代码适合你:

代码语言:javascript
复制
Private Const Pi As Double = 3.14159265358979

Public Function Atn2(y As Double, x As Double) As Double
  If x > 0 Then
    Atn2 = Atn(y / x)
  ElseIf x < 0 Then
    Atn2 = Sgn(y) * (Pi - Atn(Abs(y / x)))
  ElseIf y = 0 Then
    Atn2 = 0
  Else
    Atn2 = Sgn(y) * Pi / 2
  End If
End Function
票数 3
EN

Stack Overflow用户

发布于 2012-06-29 04:28:35

正如MarkJ之前指出的,当X<0和y=0时,accepted answer将失败。我相信下面的方法会一直起作用:

代码语言:javascript
复制
Function ArcTan2(X As Double, Y As Double) As Double

    Private Const PI As Double = 3.14159265358979
    Private Const PI_2 As Double = 1.5707963267949

    Select Case X
        Case Is > 0
            ArcTan2 = Atn(Y / X)
        Case Is < 0
            ArcTan2 = Atn(Y / X) + PI * Sgn(Y)
            If Y = 0 Then ArcTan2 = ArcTan2 + PI
        Case Is = 0
            ArcTan2 = PI_2 * Sgn(Y)
    End Select

End Function

它利用Sgn( 0 )在x和y都为0的情况下返回0。

票数 7
EN

Stack Overflow用户

发布于 2011-02-25 20:39:55

要获取列表,请在模块中键入

代码语言:javascript
复制
VBA.Math

或者使用对象浏览器。你会发现Atn和Tan,还有其他的,但是列表很短,ATan2也不包括在内。

如果要添加对Excel库的引用,可以使用:

代码语言:javascript
复制
Excel.WorksheetFunction.Atan2

编辑:您可以从任何允许您添加对Excel库的引用的Office应用程序中调用Excel工作表函数。这并不意味着使用Excel或工作表,而只是使用函数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5117265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档