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 MinLength As Long = 6, _
                             Optional MaxLength As Long = 12, _
                             Optional Dummy) As String
 
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Const LegalChars As String = _
         "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 
   Dim length As Long
   Dim i      As Long
   Dim ch     As String * 1
   Dim res    As String
 
   Randomize
 
   length = Int(Rnd() * (MaxLength - MinLength + 1) + MinLength)
   For i = 1 To length
      Do
         ch = Chr$(Rnd() * 128)
      Loop Until InStr(LegalChars, ch) > 0
      res = res & ch
   Next
   RandomString = res
End Function

Aufruf

   Debug.Print 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 die verwendete Zeichenmenge erweitert oder eingeschränkt werden


Weblinks