VBA计算相对于图形的角度

时间:2011-08-26 18:41:20

标签: vba excel-vba excel-2007 excel

在上周,我试图计算三点之间的角度 -
首先我需要得分=容易
而不是计算角度(不相对)=很容易

现在我需要获得相对于图形的角度 - 问题是我不知道如何(我确信这也很容易)。

PI = 3.141592654
A(2004,227)
B(2005,18)
C(2006,25)

这是计算角度的函数/公式>

arctan((Xb - Xa)/(Ya - Yb)) * (180/PI) + arctan((Xc - Xb)/(Yc - Yb))  * (180/PI)

我需要将哪些内容添加到公式中,以便它相对于图表? (我也想要解释)

这是图表: enter image description here

非常感谢!

1 个答案:

答案 0 :(得分:2)

编辑:以下是我的sub的完整代码来计算它。

Public Sub Question()

Dim Pi As Double
Pi = 3.141592654
Dim myChart As ChartObject

For Each myChart In ActiveSheet.ChartObjects
    Dim xLength As Double
    Dim yLength As Double
    xLength = myChart.Chart.Axes(1).MaximumScale - myChart.Chart.Axes(1).MinimumScale
    yLength = myChart.Chart.Axes(2).MaximumScale - myChart.Chart.Axes(2).MinimumScale

    xLength = xLength / myChart.Chart.PlotArea.Width
    yLength = yLength / myChart.Chart.PlotArea.Height

    Dim goodScale As Double
    goodScale = xLength / yLength

    Dim v1x As Double
    Dim v1y As Double
    Dim v2x As Double
    Dim v2y As Double
    Dim Angle As Double

    v1x = 2005 - 2004
    v1y = 18 - 227

    v2x = 2006 - 2005
    v2y = 25 - 18

    v1y = v1y * goodScale
    v2y = v2y * goodScale

    Angle = (Atn(v2x / v2y) - Atn(v1x / v1y)) * (180 / Pi)
Next
End Sub

你会注意到我对子中的点进行了硬编码,但这只是为了获得一个小的自给自足的代码。