Option ExplicitConst R40_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ- $%"Sub Main() Debug.Print R40ToR10("ABC") Debug.Print R40ToR10("12345ABCDE") End SubFunction R40ToR10(ByVal R40 As String) As Variant Dim vR10 As Variant Dim i As Long Dim ch As String Dim l As Long
vR10 = CDec(0)
For i = 1 To Len(R40) ch = Mid$(R40, i, 1) l = InStr(1, R40_CHARS, ch) - 1 vR10 = vR10 * 40 + l Next
Debug.Print R40ToR10("ABC")
Debug.Print R40ToR10("12345ABCDE")
End SubFunction R40ToR10(ByVal R40 As String) As Variant
Dim vR10 As Variant
Dim i As Long
Dim ch As String
Dim l As Long
vR10 = CDec(0)
For i = 1 To Len(R40)
ch = Mid$(R40, i, 1)
l = InStr(1, R40_CHARS, ch) - 1
vR10 = vR10 * 40 + l
Next
R40ToR10 = vR10
End Function
http://blog.csdn.net/worldy/article/details/7423111