Function doDaDecode(Eingabe As String) As String
Dim Buchstabe As String
Dim CheckLen As Integer
Dim validChar As Boolean
Dim i As Integer
Dim Ausgabe As String
Dim AusgabeMitKomma As String
Dim daCode As Integer
Dim daPos As Integer
Dim TransTableIN As String
Dim TransTableOUT As String
CheckLen = Len(Eingabe) [COLOR=#008000] 'Voraussetzung: 2 < Eingabelänge < 11[/COLOR]
Select Case CheckLen
Case 0 [COLOR=#008000] 'Es sei denn, die Eingabe ist leer,[/COLOR]
Ausgabe = "" [COLOR=#008000] ' ...dann gib auch leeren String zurück[/COLOR]
doDaDecode = Ausgabe [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
Exit Function [COLOR=#ff0000] 'ABBRUCH[/COLOR]
Case 1 To 2 [COLOR=#008000] 'Eingabe zu kurz[/COLOR]
Ausgabe = "Eingabe zu kurz (3-10)!"
doDaDecode = Ausgabe [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
Exit Function [COLOR=#ff0000]'ABBRUCH[/COLOR]
Case 3 To 10 [COLOR=#008000] 'Eingabelänge OK[/COLOR]
i = i [COLOR=#008000] ' Dummy[/COLOR]
Case Is > 10 [COLOR=#008000] 'Eingabe zu lang[/COLOR]
Ausgabe = "Eingabe zu lang (3-10)!"
doDaDecode = Ausgabe [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
Exit Function [COLOR=#ff0000] 'ABBRUCH[/COLOR]
Case Else [COLOR=#008000] 'alle anderen Fälle (sollte nicht vorkommen)[/COLOR]
Ausgabe = "unbekannter Fehler!"
doDaDecode = Ausgabe [COLOR=#008000]'Rückgabewert der Funktion[/COLOR]
Exit Function [COLOR=#ff0000] 'ABBRUCH[/COLOR]
End Select
[COLOR=#008000] 'Hier wird nur angekommen, wenn die Prüfungen oben erfolgreich waren
'===================================================================[/COLOR]
[COLOR=#008000] ' "Übersetzungstabelle"[/COLOR]
TransTableIN = "ABCDEFGHIJ"
TransTableOUT = "1234567890"
Eingabe = UCase(Eingabe) [COLOR=#008000] 'wandelt ggf. Kleinbuchstaben in Großbuchstaben um[/COLOR]
Ausgabe = ""
For i = 1 To Len(Eingabe) [COLOR=#008000] 'Schleife über alle Zeichen der Eingabe[/COLOR]
Buchstabe = Mid$(Eingabe, i, 1) [COLOR=#008000] 'nächstes Zeichen des Eingabe-Strings[/COLOR]
validChar = True [COLOR=#008000] 'initialisiere "Zeichen gültig" als "wahr"[/COLOR]
daPos = InStr(1, TransTableIN, Buchstabe)[COLOR=#008000] 'Position des Zeichens in TransTableIN[/COLOR]
If daPos = 0 Then [COLOR=#008000] 'wenn Zeichen nicht in TransTableIN vorkommt...[/COLOR]
validChar = False [COLOR=#008000] ' ... Zeichen als ungültig kennzeichnen[/COLOR]
Exit For [COLOR=#008000] ' ... und weitere String-Prüfung abbrechen[/COLOR]
End If
daCode = Mid$(TransTableOUT, daPos, 1) [COLOR=#008000] 'entsprechende Position in TransTableOUT[/COLOR]
Ausgabe = Ausgabe & daCode [COLOR=#008000] 'schrittweiser Aufbau der Ausgabe[/COLOR]
Next i
If validChar = False Then [COLOR=#008000] 'Wenn zuvor ein ungültiges Zeichen erkannt wurde...[/COLOR]
finalAusgabe = "ungültige(s) Zeichen!" [COLOR=#008000] ' ... Fehlermeldung für Ausgabe generieren[/COLOR]
Else [COLOR=#008000] 'Ansonsten...[/COLOR]
[COLOR=#008000]'... baue Komma an drittletzter Stelle ein[/COLOR]
AusgabeMitKomma = Mid(Ausgabe, 1, Len(Ausgabe) - 2) & _
"," & _
Mid(Ausgabe, Len(Ausgabe) - 1, 2)
finalAusgabe = AusgabeMitKomma
End If
[COLOR=#008000] 'Rückgabewert der Funktion[/COLOR]
doDaDecode = finalAusgabe
End Function