Jak mogę zdefiniować funkcję arcus sinus, arcus tangens i arcus cosinus w Vba?
A po co chcesz to definiować? Nie możesz użyć gotowych wbudowanych funkcji?
Ponieważ przy wpisaniu funkcji mam komunikat:
Dzięki, widziałem ten post, ale z tego
Answer = Application.Worksheetfunction.Acos(Argument)
Nie chcę korzystać ponieważ na razie program piszę w vba, ale chcę go przenieść do cada, a tam nie będzie już to działać (tak sądzę).
Z kolei tego
Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
nie ogarniam. W sensie nie wiem co to są te X, czy ja je definiuje, czy pod to daję swoje równanie/wartość? Poza tym w tym równaniu jest Atn, który zapewne też nie jest zdefiniowany.
Spotkał się ktoś z takim problemem?
Piszę kolejny komentarz ponieważ nie widzę opcji edycji.
Znalazłem taki kod:
Option Explicit Public Const Pi As Double = 3.14159265358979 Private Function ArcSin(X As Double) As Double If Abs(X) = 1 Then 'The VBA Sgn function returns an integer (+1, 0 or -1), 'representing the arithmetic sign of a supplied number. ArcSin = Sgn(X) * Pi / 2 Else 'Atn is the inverse trigonometric function of Tan, 'which takes an angle as its argument and returns 'the ratio of two sides of a right triangle ArcSin = Atn(X / Sqr(1 - X ^ 2)) End If End Function
oraz taką funkcję:
Public Function Asin() As Double
Const Pithag = 3.14159265359
Const radeg = 180 / Pithag
Avalue = CDbl(Val(Me.TextBox7.Value)) 'MAJOR DIAMETER
Bvalue = CDbl(Val(Me.TextBox4.Value)) 'MINOR DIAMETER
Cvalue = CDbl(Val(Me.TextBox2.Value)) 'U-BOLT EFFECTIVE LENGTH
Adj = CDbl(Cvalue / 2)
Opp = CDbl((Avalue - Bvalue) / 2)
Hyp = CDbl(Sqr(Opp ^ 2 + Adj ^ 2))
'INVSIN
x = Opp / Hyp
Ang = Atn(x / Sqr(-x * x + 1)) * radeg
Ang2 = CDbl(90 - Ang)
Asin = Round(Ang2, 4)
End Function
Wpisałem powyższą funkcję do vba, ale gdy wpisuję działanie z Asin pod przyciskiem to nadal wyskakuje mi błąd, że taka funkcja nie istnieje. Przypominam tylko, że nie korzystam z excela lecz z AutoCada, w którym nie działa funkcja worksheet.