VBA Tipp: Zufällige Zeichenfolge erzeugen

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem:

Ich möchte eine zufällige Folge von Buchstaben und Ziffern erzeugen (z.B. als Vorgabe für ein Passwort).

Lösung:

Die folgende Funktion erzeugt eine zufällige Zeichenfolge, wobei sich minimale und maximale Länge vorgeben lassen:

Public Function RandomString(Optional MinLg = 6, Optional MaxLg = 12, _
  Optional Dummy)
Const LegalChars = _
  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Dim Lg As Long, I As Long, Ch As String * 1, Res As String
  Randomize
  Res = ""
  Lg = Int(Rnd() * (MaxLg - MinLg + 1) + MinLg)
  For I = 1 To Lg
    Do
      Ch = Chr(Rnd() * 128)
    Loop Until InStr(LegalChars, Ch) > 0
    Res = Res & Ch
  Next I
  RandomString = Res
End Function

Aufruf

RandomString(8,8)
 
'Rückgabe:
1TsmyFIV

Der 3. Parameter ("Dummy") kann verwendet werden, um in einer Aktualisierungsabfrage den Aufruf der Funktion in jeder Zeile zu erzwingen:

UPDATE MeineTabelle SET MeinFeld = RandomString(8,8,ID)

"ID" ist in diesem Fall der Primärschlüssel der Tabelle, das sieht dann im Abfrageentwurf so aus:

AccQryRandomUpdate1.gif


Wiki hinweis.png Anmerkung: Durch Anpassen der Konstanten Legalchars kann der verwendete Zeichensatz erweitert oder eingeschränkt werden