Zdefiniowanie funkcji arcus sinus, arcus cosinus i arcus tangens

2018-10-30 13:28
Ja
0

Jak mogę zdefiniować funkcję arcus sinus, arcus tangens i arcus cosinus w Vba?

edytowany 1x, ostatnio: furious programming, 2018-10-30 13:40

Pozostało 580 znaków

2018-10-30 13:51
0

A po co chcesz to definiować? Nie możesz użyć gotowych wbudowanych funkcji?

Pozostało 580 znaków

2018-10-30 14:17
Ja
0

Ponieważ przy wpisaniu funkcji mam komunikat:
screenshot-20181030141729.png

Pozostało 580 znaków

2018-10-30 14:18
2018-10-30 14:24
Ja
0

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?

edytowany 8x, ostatnio: furious programming, 2018-10-30 15:19

Pozostało 580 znaków

2018-11-01 22:41
Ja
0

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.

edytowany 1x, ostatnio: furious programming, 2018-11-01 23:29

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0