VBA是否具有ATan2功能?

Iai*_*oat 4 vba

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

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

Fio*_*ala 6

要获取列表,请键入您的模块

VBA.Math
Run Code Online (Sandbox Code Playgroud)

或者使用对象浏览器.你会发现Atn和Tan等,但名单很短,不包括ATan2.

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

Excel.WorksheetFunction.Atan2
Run Code Online (Sandbox Code Playgroud)

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


Avi*_*Avi 5

正如之前MarkJ所指出的,当X <0且y = 0时,上述代码将失败.我相信以下内容会一直有效:

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
Run Code Online (Sandbox Code Playgroud)

在x和y均为0的情况下,它利用Sgn(0)返回0.

  • 以上假设为标准顺序。有些语言似乎交换了 X 和 Y 的输入。参见 &lt;https://en.wikipedia.org/wiki/Atan2&gt; (2认同)