Public Function AnyToDecimal(ByVal InputStr As String, ByVal InBase As Integer) As Long
'Input - InputStr - Any number in any base as string representation
' - InBase - The input number base must be in the range 2 - 36
'
'Output - Converted decimal value.
' - -1 if wrong input base or error encountered
'
On Error GoTo ErrHndl
Dim TestChar As Char
Dim TestPlace As Long
Dim i As Integer
If InBase <2 Or InBase > 36 Then
'InBase must be in the range 2 - 36, so return -1
AnyToDecimal = -1
Exit Function
End If
'All character bases up to 36
Const CharSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For i = Len(InputStr) To 1 Step -1
'Test one character at a time
TestChar = Mid$(InputStr, i, 1)
TestPlace = InStr(1, CharSet, TestChar, vbTextCompare) - 1
If TestPlace < 0 Or TestPlace > InBase Then
'Checks if the character is a valid one, if not valid then return -1
AnyToDecimal = -1
Exit Function
End If
AnyToDecimal = AnyToDecimal + TestPlace * InBase ^ (Len(InputStr) - i)
Next i
Exit Function
ErrHndl:
'Error handling - return Null string
AnyToDecimal = -1
End Function