Winkelfunktionen - Syntax??

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von loeneberger.

    Winkelfunktionen - Syntax??

    Hallo alle zusammen,
    bin absoluter Neueinsteiger in VBA. Hab mir aus der Bücherei ein Einsteigerseminar geholt und durchgearbeitet. Und hab auch schon ganz gute Ergebnisse. Brauche es um für CNC-Programme (Mill Plus) Koordinaten und Vektoren zu berechnen. Da ich kein Cad-Cam System zur Verfügung habe.

    Nun zu meinem Problem. Ich möchte den Sinuswert eines Winkels der sich z.b. durch
    atan(a)=Gegenkathete / Ankathete ergibt.

    Konkretes beispiel (Ergebnis laut Taschenrechner):

    x=10
    Atan(a)=2x/x
    a=63,4349 °

    sin(a)= 0,8944

    Meine vorläufige Prozedur schaut so aus:

    Sub winkelberechnen()
    Dim x As Double, y As Double, t As Double, v As Double
    x = 10
    y = 2 * x
    t = (Atn(y / x)) * (180 / 3.141592654)
    v = Sin(t)

    Cells(1, 1).Value = "Winkel " & t
    Cells(1, 2).Value = "Vektor " & v
    Debug.Print "Winkel " & t
    Debug.Print "Vektor " & v
    End Sub

    Ergebnisse laut Prozedur:
    t=63,4349 (Stimmt also)
    v=0,5671 (Haut überhaupt nicht hin)

    Hab ich vielleicht einen falschen Syntax oder lieg ich generell falsch, ich weiss nicht mehr weiter.
    Im Voraus schon mal vielen Dank.
    MFG

    P.S. Benutze Office 2007








    Antworten
    Bei der Berechnung von t wandelst du den Winkel vom Bogenmaß in das Gradmaß um. Um nun bei v einen korrekten Sinus-Wert zu bekommen, musst du den Winkel vom Gradmaß wieder ins Bogenmaß umwandeln.

    Nur so am Rande: Ich persönlich berechne pi mit: 4 * Atn(1). Eine andere Möglichkeit wäre, eine Konstante zu definieren:

    Visual Basic-Quellcode

    1. Const pi As Double = 3.1415926535897932


    Natürlich kannst du auch die Zahl jedes Mal eintippen. Da schleichen sich aber auch gerne Fehler ein.

    Re. Winkelfunktionen - Syntax??

    Vielen Dank erst mal für die schnelle Antwort.

    Allerdings ist es so das ich den Vektor berechnen will. Also brauch ich den Dezimalwert des Sinus.

    Wie z.B. sin45° = 0,707

    Mit dem Bogenmass kann ich leider nichts anfangen. Weiss jemand wie man es gegebenfalls umrechnen kann oder eine andere Funktion ??

    MFG

    Visual Basic-Quellcode

    1. Const pi As Double = 3.14159265358979
    2. Sub winkelberechnen()
    3. Dim x As Double, y As Double, t As Double, v As Double
    4. x = 10
    5. y = 2 * x
    6. t = Atn(y / x) * 180 / pi
    7. v = Sin(t / 180 * pi)
    8. Cells(1, 1).Value = "Winkel " & t
    9. Cells(1, 2).Value = "Vektor " & v
    10. Debug.Print "Winkel " & t
    11. Debug.Print "Vektor " & v
    12. End Sub


    t hat dann den Wert 63,434948822922 und v den Wert 0,894427190999916.

    Wenn du das jedoch häufiger im Code brauchst kannst du auch Funktionen definieren:

    Visual Basic-Quellcode

    1. Const pi As Double = 3.14159265358979
    2. Function ArcTan(x As Double) As Double
    3. ArcTan = Atn(x) * 180 / pi
    4. End Function
    5. Function Sinus(x As Double) As Double
    6. Sinus = Sin(x / 180 * pi)
    7. End Function
    8. Sub winkelberechnen()
    9. Dim x As Double, y As Double, t As Double, v As Double
    10. x = 10
    11. y = 2 * x
    12. t = ArcTan(y / x)
    13. v = Sinus(t)
    14. Cells(1, 1).Value = "Winkel " & t
    15. Cells(1, 2).Value = "Vektor " & v
    16. Debug.Print "Winkel " & t
    17. Debug.Print "Vektor " & v
    18. End Sub


    Hier erhalten wir für t und v die gleichen Werte wie oben.