VBA Tipp: Vanity Numbers

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Ich möchte zu einem Text die entsprechende "vanity number" ermitteln. (Das sind die Telefon-Nummern, die der Buchstabenfolge auf der Telefontastatur entsprechen - auch 0700-Nummern genannt.)

Lösung

Die Lösung findet sich in dieser kleinen VBA-Funktion:

Public Function Vanity(S)
Dim Res As String, i As Long
If IsNull(S) Then
  Vanity = Null
Else
  Res = ""
  For i = 1 To Len(S)
    Select Case UCase(Mid(S, i, 1))
    Case "A", "B", "C": Res = Res & "2"
    Case "D", "E", "F": Res = Res & "3"
    Case "G", "H", "I": Res = Res & "4"
    Case "J", "K", "L": Res = Res & "5"
    Case "M", "N", "O": Res = Res & "6"
    Case "P", "Q", "R", "S": Res = Res & "7"
    Case "T", "U", "V": Res = Res & "8"
    Case "W", "X", "Y", "Z": Res = Res & "9"
    End Select
  Next i
  Vanity = Res
End If
End Function

Aufruf

Debug.Print Vanity("Meier")
63437
 
' ggf. auf 8 Stellen auffüllen:
?Format(Vanity("Meier"),"00000000")
00063437