Ted, My office computer is down, so I refactored it to sharpen my eye for any invalid names. Didn't see any. And, no. I don't understand the math.
Function GetMiles(lat1Degrees As Double, lon1Degrees As Double, lat2Degrees As Double, lon2Degrees As Double)
'All values in nautical miles
'Mean radius of the earth
Const EarthRadiusNauticalMiles As Double = 3443.89849
Dim lat1Radians As Double
Dim lon1Radians As Double
Dim lat2Radians As Double
Dim lon2Radians As Double
Dim AsinBase As Double
Dim DerivedAsin As Double
'Convert each decimal degree to radians
lat1Radians = Degrees2Radians(lat1Degrees)
lon1Radians = Degrees2Radians(lon1Degrees)
lat2Radians = Degrees2Radians(lat2Degrees)
lon2Radians = Degrees2Radians(lon2Degrees)
AsinBase = Sin(Sqr(Sin((lat1Radians - lat2Radians) / 2) ^ 2 + Cos(lat1Radians) * Cos(lat2Radians) * Sin((lon1Radians - lon2Radians) / 2) ^ 2))
DerivedAsin = (AsinBase / Sqr(-AsinBase * AsinBase + 1))
'Get distance from [lat1,lon1] to [lat2,lon2]
GetMiles = Round(2 * DerivedAsin * EarthRadiusNauticalMiles, 2)
End Function
Private Function Degrees2Radians(Degrees As Double) As Double
Degrees2Radians = (Degrees / 180) * 3.14159265359
End Function