LÖSUNGEN

Zufallsnamen generieren

Zufallszeichenketten benötigt man immer wieder, sei es als Dateinamen für temporäre Dateien oder als Schlüsselwerte, Testdaten und vieles mehr. Die hier vorgestellte Funktion erlaubt es, eine Zufallszeichenkette beliebiger Länge zu erzeugen, die aus Buchstaben, eventuell Ziffern und Leerzeichen besteht.

Eine Zufallszeichenkette können Sie mit Hilfe des Zufallsgenerators von VBA, der Funktion rnd erzeugen. Sie müssen nichts weiter tun, als eine Zufallszahl zu berechnen, die Sie dann mit 100 multiplizieren in einen Integer-Wert konvertieren und dann als ASCI-Code an die Funktion chr übergeben. Alle so erzeugten Zeichen hängen Sie aneinander, wenn Sie im gültigen Zeichenbereich liegen.

Eine Zeichenkette erzeugen

Die Zeichenkette wird von der Funktion getZZK erzeugt und zurückgegeben. Die Funktion erwartet mindestens einen Parameter, der die Länge der Zeichenkette angibt. Außerdem gibt es zwei optionale Parameter, die bestimmen, ob Ziffern beziehungsweise Leerzeichen in der Zeichenkette zulässig sind.

Function getZZK(lngLaenge As Long, Optional _
boolZiffern As Boolean = True, _
Optional boolLeer As Boolean = False) As String
'erzeugt eine Zufallszeichenkette der Länge lngLaenge
'boolZiffern gibt an, ob Ziffern enthalten sein dürfen
Dim intZiffer As Integer
Dim strZ As String
Dim lngI As Long
Do
getZZK = ""
For lngI = 1 To lngLaenge
Do
strZ = ""
intZiffer = CInt(Rnd() * 100)
If boolZiffern = True Then
If ((intZiffer >= 48) And (intZiffer <= 57)) Then
strZ = Chr(intZiffer)
End If
End If
If boolLeer = True Then
If intZiffer = 32 Then
strZ = Chr(intZiffer)
End If
End If
If ((intZiffer >= 65) And (intZiffer <= 90)) Or _
((intZiffer >= 97) And (intZiffer <= 122)) Then
strZ = Chr(intZiffer)
End If
Loop Until strZ > ""
getZZK = getZZK & strZ
Next lngI
Loop Until boolgueltig(getZZK)
End Function

Die äußere Do-Loop-Schleife sorgt dafür, dass die Zeichenkette so oft neu berechnet wird, bis sie gültig ist. Ob das der Fall ist, wird in der Until-Bedingung geprüft, die dazu den berechneten Wert an die Funktion boolgueltig übergibt. Gibt die Funktion den Wert true zurück, wird die Schleife und damit auch die Funktion verlassen, andernfalls wird die Zeichenfolge neu berechnet.

Innerhalb der Schleife setzt die Funktion den Rückgabewert der Funktion zunächst auf 0 und startet dann eine For-Schleife, die sicherstellt, dass die erzeugte Zeichenkette die gewünschte Länge hat.

Bei jedem Schleifendurchlauf der For-Schleife wird durch die innere Do-Loop-Schleife ein gültiges Zeichen erzeugt. Dazu wird zunächst eine Zufallszahl ermittelt, mit 100 multipliziert und dann in eine Integer-Zahl konvertiert. Die verschiedenen If-Bedingungen prüfen nun, ob die berechnete Zahl einem ASCI-Wert aller zulässigen Zeichen entspricht. Falls ja, wird das entsprechende Zeichen mit der Chr-Funktion erzeugt und der Variablen strZ zugewiesen. Hat diese Variable am Ende der Schleife einen Wert ungleich einer leeren Zeichenfolge, wird sie an den Funktionswert angehängt, andernfalls wird ein neues Zeichen berechnet.