我想atan2在VBA中计算,但我不确定该函数是否存在(甚至在哪里可以找到内置VBA函数的规范列表).我没有使用Excel,因此无法进行工作表调用.
我可以自己实现 atan2,但如果可能的话,我宁愿避免这样做.
要获取列表,请键入您的模块
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或工作表,只是函数.
正如之前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.