Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zufallsgenerator

Zufallsgenerator
28.09.2007 13:36:36
tobstein
Hallo,
ich benötige ein Makro, welches mir zufällige Zeichen ausgibt.
Die Zeichen sollen aus den Buchstaben a - z und den Ziffern 0 - 1 bestehen.
Bei Start des Makros soll eine kurze Abfrage erscheinen aus wieviel Zeichen das Zufallswort bestehen soll.
Gebe ich dann z.B. 8 ein, könnte das ausgegebene Wort etwa a57zva61 lauten.
Wie bekomme ich das hin?
gruß
tobi

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA - Lösung
28.09.2007 13:51:00
Klaus
Hallo Tobi,
versuch mal diesen Code (in einem Modul)

Option Explicit
Sub Zufallscode()
Dim iObergrenze As Integer
Dim iUntergrenze As Integer
Dim iCodeLaenge As Integer
Dim MyCode As String
Dim CodePart As String
Dim x As Integer
Randomize
iCodeLaenge = InputBox("Länge des Code Eingeben")
iObergrenze = 122
iUntergrenze = 87
For x = 1 To iCodeLaenge
CodePart = Int((iObergrenze - iUntergrenze + 1) * Rnd + iUntergrenze)
If CodePart 


Grüße,
Klaus M.vdT.

Anzeige
AW: VBA - Lösung
28.09.2007 14:18:40
tobstein
Hallo Klaus....habe jetzt Dein Script ausprobiert...wunderbar!
Kurze Frage...wenn man z.B. nur Buchstaben oder nur Zahlen haben möchte...was müsste man ändern im Script?
tobi

AW: VBA - Lösung
01.10.2007 13:54:57
Klaus
Hallo Tobstein,
schau dir mal die "ASCII-Code" Tabelle an (googeln). Wenn du zB. die Taste ALT gedrückt hälst und dann auf dem Nummernblock die Tasten 9 und 7 nacheinander drückst, erhälst du den AsciiCode 97, welcher für ein kleines a steht. In VBA wird ein Ascii Code mit dem Befehl "chr(#)" angezeigt, CHR(97) ergibt also ein a.
Die Zeile
"CodePart = Int((iObergrenze - iUntergrenze + 1) * Rnd + iUntergrenze)"
erzeugt eine Zufallszahl zwischen den angegebenen Grenzen. Nimm entsprechende Bereiche aus der Ascii-Tabelle (je nach gewünschten Code-Zeichen) als Zufallsbereich.
Pass mit den Ascii Codes unter 20 auf, da sind solche Späße wie ENTER und SHIFT drin.
Grüße,
Klaus M.vdT.

Anzeige
AW: Zufallsgenerator
28.09.2007 14:14:50
tobstein
Hallo,
erst einmal vielen Dank für beide Lösungen. Beide funktioniren und sind super...die von Klaus eine kleine
Spur feiner.
Deshalb auch direkt noch zwei fragen an Klaus:
1. Wie kann ich die Anzahl der Zeichen verändern...also anstatt 8 vielleicht 12
2. Ich habe den VBA-Script auf einen Button gelegt...dann erscheint aber die Abfrage der Anzahl nicht mehr...was könnte ich da falsch gemacht haben?
Gruß
tobi

AW: Zufallsgenerator
28.09.2007 14:16:00
tobstein
Sorry...vergesse frage Nr. 1...ist ja totaler Blödsinn von mir...dafür ist ja die Abfrage da... ;-)

AW: Zufallsgenerator
ransi
HAllo
Um mal schnell ein par Beispieldaten in eine Tabelle zubekommen nutze ich seit geraumer Zeit das hier:
Das kommt dem Gewünschten schon recht nah....
Public Sub zahl()
Dim arr
Dim Z As Long
Dim S As Integer
Dim unten As Long
Dim oben As Long
Dim Bereich As Range
Dim i As Long
Dim K As Long
On Error GoTo schluss
Set Bereich = Application.InputBox(prompt:="Zellen markieren !" & Chr(13) & "Zahlen", Default:=Selection.Address, Type:=8)
If Bereich Is Nothing Then GoTo schluss
unten = Application.InputBox(prompt:="Untergrenze", Default:=0, Title:="Zufallsbereich", Type:=1)
oben = Application.InputBox(prompt:="Obergrenze", Default:=100, Title:="Zufallsbereich", Type:=1)
With Application 'zum beschleunigen
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
End With
Z = Bereich.Rows.Count
S = Bereich.Columns.Count
Redim arr(1 To Z, 1 To S)
Randomize
For i = 1 To Z
    For K = 1 To S
        arr(i, K) = Int((oben - unten + 1) * Rnd + unten)
    Next
Next
Bereich.Value = arr
schluss:
With Application 'zum beschleunigen
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    .EnableEvents = True
End With
Set Bereich = Nothing
End Sub

Public Sub str()
Dim arr
Dim Z As Long
Dim S As Integer
Dim Bereich As Range
Dim i As Long
Dim K As Long
Dim w As Integer
Dim w1 As Integer
On Error GoTo schluss
Set Bereich = Application.InputBox(prompt:="Zellen markieren !" & Chr(13) & "Buchstaben", Type:=8, Default:=Selection.Address)
If Bereich Is Nothing Then GoTo schluss
w = Application.InputBox(prompt:="Zellen markieren !" & Chr(13) & "Wieviele Buchstaben", Type:=1, Default:=1)
With Application 'zum beschleunigen
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
End With
Z = Bereich.Rows.Count
S = Bereich.Columns.Count
Redim arr(1 To Z, 1 To S)
Randomize
For i = 1 To Z
    For K = 1 To S
        For w1 = 1 To w
            arr(i, K) = arr(i, K) & IIf(Rnd <= 1 / 3, Chr(Int(10 * Rnd + 48)), Chr(Int(26 * Rnd + 65)))
        Next
    Next
Next
Bereich.Value = arr
schluss:
With Application 'zum beschleunigen
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    .EnableEvents = True
End With
Set Bereich = Nothing
End Sub

ransi
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige