'############################################################
'#緯度経度の表示方法を変換する
'#
'# 引数1:str(度分秒もしくは10進数で書かれた緯度or経度)
'# 引数2:i(省略時0:小数第何位まで表示させるか。四捨五入)
'# 戻値:度分秒の場合は10進数表記、10進数の場合は度分秒表記に変換された結果
'# 想定:日本国内(緯度経度ともに正の場合)
'# 対応表記:「°」「′」「’」「'」「″」※日本語の「度分秒」には対応していない
'#
'############################################################
Function Conv経緯度(ByVal str As String, Optional ByVal i As Long)
Dim 度 As Long, 分 As Long, 秒 As Double
If IsNumeric(str) = True Then
'10進数→度分秒
度 = Int(str)
分 = Int((str - 度) * 60)
秒 = Round(((str - 度) * 60 - 分) * 60, i)
Conv経緯度 = 度 & "°" & 分 & "′" & 秒 & "″"
Else
'度分秒→10進数
str = StrConv(str, vbNarrow) '「’」(全角)と「'」(半角)混在対処で半角に
str = Replace(str, "'", "′") '「'」を「′」に統一
度 = Split(str, "°")(0)
分 = Split(Split(str, "′")(0), "°")(1)
秒 = Val(Split(str, "′")(1))
Conv経緯度 = 度 + 分 / 60 + 秒 / 3600
End If
End Function