Afstand VBA code

Status
Niet open voor verdere reacties.

Gerard140365

Nieuwe gebruiker
Lid geworden
9 nov 2010
Berichten
2
Van onderstaande code is de Uitkomst : 389.220

Het zou moeten zijn 382.240186

wie o wie ziet t probleem. Alvast bedankt..............

Code:
Var1 = "49:40:43.3"
Var2 = "05:18:07.6"
 
Var3 = "53:06:34.5"
Var4= "06:05:33.2"
 
If Left(Var1,1) = "-" Then
Var1a = -((Mid(Var1,2,2) + Mid(Var1,5,2)/60 + Mid(Var1,8,4)/3600))
Else
Var1a = Left(Var1,2) + Mid(Var1,4,2)/60 + Mid(Var1,7,4)/3600
End If
If Left(Var2,1) = "-" Then
Var2a = -((Mid(Var2,2,2) + Mid(Var2,5,2)/60 + Mid(Var2,8,4)/3600))
Else
Var2a = Left(Var2,2) + Mid(Var2,4,2)/60 + Mid(Var2,7,4)/3600
End If
If Left(Var3,1) = "-" Then
Var3a = -((Mid(Var3,2,2) + Mid(Var3,5,2)/60 + Mid(Var3,8,4)/3600))
Else
Var3a = Left(Var3,2) + Mid(Var3,4,2)/60 + Mid(Var3,7,4)/3600
End If
If Left(Var4,1) = "-" Then
Var4a = -((Mid(Var4,2,2) + Mid(Var4,5,2)/60 + Mid(Var4,8,4)/3600))
Else
Var4a = Left(Var4,2) + Mid(Var4,4,2)/60 + Mid(Var4,7,4)/3600
End If
 
PI = 3.1415926535897
RAD = PI/180
 
E1 = Var1a*RAD
N1 = Var2a*RAD
E2 = Var3a*RAD
N2 = Var4a*RAD 
 
EA2 = 0.0067394967422767
CONS1 = 0.99664718933525
CONS2 = 6378137
 
BHO = (N1 + N2) / 2
IHO = E2 - E1
NU2 = EA2 * COS(BHO) ^ 2
VHO = SQR(1 + NU2)
LAHO = VHO * IHO
OM1 = ATN(CONS1 * TAN(N1))
OM2 = ATN(CONS1 * TAN(N2))
XHO = SIN(OM1) * SIN(OM2) + COS(OM1) * COS(OM2) * COS(LAHO)
AFSTG = (CONS2 / VHO) * (ATN(-XHO / SQR(1 - XHO ^ 2)) + 2 * ATN(1))
AFSTG = Round(AFSTG,0)
AFSTGKM = ASTG/1000
 
Laatst bewerkt door een moderator:
Hoe weet je dat het antwoord: 382.240186
moet zijn?

Je zou anders de code stap voor stap kunnen doorlopen om te kijken waar één van de variabelen een andere waarde krijgt dan dat het volgens jou zou moeten zijn
 
Hoe weet je dat het antwoord: 382.240186
moet zijn?

Je zou anders de code stap voor stap kunnen doorlopen om te kijken waar één van de variabelen een andere waarde krijgt dan dat het volgens jou zou moeten zijn

Deze code is om de juiste afstand te berekenen die postduiven afleggen tijdens een race. Deze formule wordt gebruikt in diverse applicaties, vandaar dat ik weet dat de uitkomst 382,240186 moet zijn.
Ik kan de fout in de code niet vinden......................:rolleyes:
 
Deze code is om de juiste afstand te berekenen die postduiven afleggen tijdens een race. Deze formule wordt gebruikt in diverse applicaties, vandaar dat ik weet dat de uitkomst 382,240186 moet zijn.
Ik kan de fout in de code niet vinden......................:rolleyes:

En hoe moeten helpers jou nu helpen - zeker als ze niets van postduiven kennen? Ergens iets aanpassen (wat? in welke zin? ...) en hopen dat er het gewenste getal uit voortkomt? Dat is zoeken naar een speld in een hooiberg. Doe ik niet aan mee ;)
 
Als jij weet welke waarde de verschillende variabelen krijgen tijdens de volgens jou correcte berekening is dit makkelijk uit te pluizen. Open daartoe je VB-Editor en open het venster Lokale variabelen. Doorloop nu je code met F8 en in het deelvenster kan je perfect volgen waar het eventueel mis zou lopen.
 
Waarschijnlijk volstaat het om de numerieke variabelen als 'double' (niet als integer dus) te declareren. Als je berekeningen maakt met radialen, dan vermenigvuldigt en later weer optelt, dan krijg je dit soort fouten.

Beste groeten,
Paul.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan