Hier
k = Len(txta)
ReDim abc(1 To k) As String
For i = 1 To k
abc(i) = Mid(txta, i, 1)
Next i
wird die Eingabe in einzelne Zeichen zerlegt und in ein Array (Datenfeld) zwischengespeichert.
Der Teil
For i = 1 To k
For j = 1 To k - 1
If abc(j + 1) < abc(j) Then
h = abc(j)
abc(j) = abc(j + 1)
abc(j + 1) = h
End If
Next j
Next i
ist als BubbleSort bekannt, also ein Sortieralgorithmus (den ihr, wenn der hier dran kommt, sicher mal im Unterricht/Vorlesung hattet).
Hier
s = ""
For i = 1 To k
s = s + abc(i)
Next i
txtb = s
wird anschließend der Inhalt des nun sortierte Arrays, zeichnweise aneinander hängend, in die Variable 's' geschrieben und dann in txtb ausgegeben.
-> Zum Beispiel wird aus der Eingabe 967 demnach 679.
Wie der Algo. die Zeichen im BubbleSort sortiert, wird durch
Option Compare Database
in der ersten Zeile festgelegt (diese werden also bei deutscher GebietsID nach deutschen Regeln sortiert, Groß-/Kleinschreibung wird nicht beachtet).
Ziemlich am Anfang siehst du ein
On Error GoTo sp
und am Ende ein
sp:
txtb = "abc"
Das bewirkt das wann immer irgendwo in dem Makro nach de On Error Goto - Anweisung ein Fehler auftritt, springt das Makro zu dem Punkt 'sp'. Dies ist z.b. der Fall, wenn die Eingabe leer bleibt. Dann wird nämlich versucht bei
k = Len(txta)
ReDim abc(1 To k) As String
ein Array mit der Dimension 1 nach 0 erzeugen und das ist nicht gültig (bei Punkt e würde also 'abc' in txtb stehen).
Hoffe das hat dir geholfen.
Gruß
|