Function ABC(r, Optional d1 As Boolean, Optional d2 As Byte) As Variant
Dim i&, s$, t As Variant
s = CStr(r)
If Len(s) Then
For i = Len(s) To 1 Step -1
Select Case Asc(Mid$(CStr(r), i, 1))
Case 36: If d1 Then t = "USD" & t Else t = "$" & t
Case 45, 46, 48 To 57, 65 To 90, 97 To 122: t = Mid$(s, i, 1) & t
Case 95, 150, 151, 173, 175: If d1 Then t = "-" & t Else t = Mid$(s, i, 1) & t
Case 128: If d1 Then t = "EUR" & t Else t = "€" & t
Case 131: If d1 Then t = "f" & t Else t = "ƒ" & t
Case 138: t = "S" & t
Case 140: t = "OE" & t
Case 142: t = "Z" & t
Case 152: t = "" & t
Case 153: If d1 Then t = "TM" & t Else t = "™" & t
Case 154: t = "s" & t
Case 156: t = "oe" & t
Case 158: t = "z" & t
Case 159, 221: t = "Y" & t
Case 163: If d1 Then t = "GBP" & t Else t = "£" & t
Case 165: If d1 Then t = "JPY" & t Else t = "¥" & t
Case 169: If d1 Then t = "c" & t Else t = "©" & t
Case 170, 224 To 229: t = "a" & t
Case 174: t = "r" & t
Case 178: t = "2" & t
Case 179: t = "3" & t
Case 185: t = "1" & t
Case 192 To 197: t = "A" & t
Case 198: t = "AE" & t
Case 199: t = "C" & t
Case 200 To 203: t = "E" & t
Case 204 To 207: t = "I" & t
Case 208: t = "D" & t
Case 209: t = "N" & t
Case 210 To 214: t = "O" & t
Case 217 To 220: t = "U" & t
Case 230: t = "ae" & t
Case 231: t = "c" & t
Case 232 To 235: t = "e" & t
Case 236 To 239: t = "i" & t
Case 240, 242 To 246: t = "o" & t
Case 241: t = "n" & t
Case 249 To 252: t = "u" & t
Case 253, 255: t = "y" & t
Case Else: If d1 Then t = "" & t Else t = Mid$(s, i, 1) & t
End Select
Next
If d2 = 1 Then
t = LCase(t)
ElseIf d2 = 2 Then
t = UCase(t)
End If
If IsNumeric(t) And (VarType(r) <> 8) Then t = 1 * t
Else
t = ""
End If
ABC = t
End Function