Các anh vui lòng xem giúp đoạn code này, em viết để tính góc beta trái của đường chuyền kinh vĩ trong trắc địa xuất theo định dạng d.ms, nhưng ko hiểu sao nó cứ báo lỗi #Value. Em mới mày mò VBA thôi, mà mò mãi mà ko biết tại sao
Xin cảm ơn rất nhiều
Xin cảm ơn rất nhiều
PHP:
Function beta(x1 As Double, y1 As Double, x2 As Double, y2 As Double, x3 As Double, y3 As Double) As Double
Dim dx12 As Double, dy12 As Double, dx23 As Double, dy23 As Double, dh1 As Double, dh2 As Double, beta1 As Double
Dim d As Double, m As Double, s As Double
Dim pi As Double
pi = 4 * Atn(1)
dx12 = x2 - x1
dy12 = y2 - y1
If dx12 = 0 Then
If dy12 > 0 Then
dh1 = pi / 2
Else
If dy12 < 0 Then
dh1 = 3 * pi / 2
End If
End If
Else
If dy12 = 0 Then
If dx12 > 0 Then
dh1 = 0
Else
dh1 = pi
End If
Else
If dx12 > 0 Then
dh1 = Atn(dy12 / dx12) + 2 * pi
Else
dh1 = Atn(dy12 / dx12) + pi
End If
End If
End If
If dh1 >= 2 * pi Then
dh1 = dh1 - 2 * pi
End If
If dh1 < 0 Then
dh1 = dh1 + 2 * pi
End If
dx23 = x3 - x2
dy23 = y3 - y2
If dx23 = 0 Then
If dy23 > 0 Then
dh2 = pi / 2
Else
If dy23 < 0 Then
dh2 = 3 * pi / 2
End If
End If
Else
If dy23 = 0 Then
If dx23 > 0 Then
dh2 = 0
Else
dh2 = pi
End If
Else
If dx23 > 0 Then
dh2 = Atn(dy23 / dx23) + 2 * pi
Else
dh2 = Atn(dy23 / dx23) + pi
End If
End If
End If
If dh2 >= 2 * pi Then
dh2 = dh2 - 2 * pi
End If
If dh2 < 0 Then
dh2 = dh2 + 2 * pi
End If
beta1 = dh2 - dh1 + pi
If beta1 >= 2 * pi Then
beta1 = beta1 - 2 * pi
End If
If beta1 < 0 Then
beta1 = beta1 + 2 * pi
End If
d = Int(beta1 * (180 / pi))
m = Int(beta1 * (180 * 60 / pi)) - d * 60
s = Int(beta1 * (180 * 3600 / pi)) - d * 3600 - m * 60
beta = d + m / 100 + s / 10000
End Function
Lần chỉnh sửa cuối: