Hallo Stephan,
nicht nach ungewünschten Zeichen suchen, sondern gleich bei der Generierung vermeiden.
Code: Alles auswählen
Sub Zufall_Bereich
iXi = Cint(rnd()*(iZBb-iZBv) +iZBv)
sZeichen = Chr(iXi)
End Sub
Diese Sub "zieht" aus einem bestimmten Bereich ein zufälliges Zeichen. So weit so gut. Jedoch müssen erstmal die Variblen
iZBb und
iZBv, welche den "Zeichenbereich" defenieren, mit Leben gefüllt werden damit überhaupt Zeichen gezogen werden können. Und die Defenierung des Zeichenbereichs geschieht in dieser Sub.
Code: Alles auswählen
Sub ZufaelligesZeichen
'
' Aufruf durch:-------> Sub PASSWORT; hier in diesem Modul.
'
iX = Cint(rnd()*1+1)
if iX = 1 then
iZBv = 33
iZBb = 93
Zufall_Bereich
else
iZBv = 97
iZBb = 123
Zufall_Bereich
end if
End Sub
Als erstes wird eine Zufallszahl gezogen die darüber entscheidet wo es in der IF-THEN weitergeht.
Wenn Du in einem Calc-Sheet z.B. in der Spalte A (Zelle A1) die Zahl 32 eingibst, und diese Zelle nach unten ziehst, dann werden logischerweise die folgenden Zellen immer um eins erhöht.
Jetzt gibst Du in der Spalte daneben einfach das ein:
Und schon wird dir das dementsprechende Zeichen ausgegeben, z.B. das Leerzeichen (32) oder das Ausrufezeichen (33).
Nun müsstest Du verstehen was die Zahlen 33 & 93, sowie 97 & 123 bedeuten.
Ich hatte den Bereich 94 - 96 ausgeklammert, da dies manchmal zu komplikationen in der Darstellung führte.
Anhand der eben erstellten Zeichenliste kannst Du dir nun den, oder die Zeichenbereiche auswählen in denen die Zeichen gezogen werden sollen.
Jetzt dürfte es eigentlich gar nicht so schwer sein die Zeichenbereiche auszuklammern die nicht gezogen werden sollen. Hoffe ich zumindest. Ansonsten musst Du das sagen.
Ach ja!
Die Beispieldatei ist ein Auszug aus einem Makro welches ich in einer Datei verwende um sogenannte Captcha zu generieren, die der Anwender dann in ein dementsprechendes Feld im Dialog eingeben muss um im Dialog weiter zu kommen. Und da gab es z.B. mit den eben genannten ausgeklammerten Bereich komplikationen. Jedoch gibt es dort nicht die Einschränkung für Zeichenvergabe von Datei- und Verzeichnisnamen.
Gruß
balu