Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Zufallsgenerator

Betrifft: Zufallsgenerator von: tobstein
Geschrieben am: 28.09.2007 13:36:36

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

  

Betrifft: AW: Zufallsgenerator von: Hajo_Zi
Geschrieben am: 28.09.2007 13:40:06

Hallo Tobi,

vielleicht ist dies ein Ansatz.

http://www.excelformeln.de/formeln.html?welcher=318

GrußformelHomepage


  

Betrifft: VBA - Lösung von: Klaus M.vdT.
Geschrieben am: 28.09.2007 13:51:11

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 < 97 Then
        MyCode = MyCode & CodePart - iUntergrenze
    Else
        MyCode = MyCode & Chr(CodePart)
    End If
Next x
MsgBox (MyCode)

End Sub




Grüße,
Klaus M.vdT.


  

Betrifft: AW: VBA - Lösung von: tobstein
Geschrieben am: 28.09.2007 14:18:40

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


  

Betrifft: AW: VBA - Lösung von: Klaus M.vdT.
Geschrieben am: 01.10.2007 13:54:57

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.


  

Betrifft: AW: Zufallsgenerator von: tobstein
Geschrieben am: 28.09.2007 14:14:50

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


  

Betrifft: AW: Zufallsgenerator von: tobstein
Geschrieben am: 28.09.2007 14:16:21

Sorry...vergesse frage Nr. 1...ist ja totaler Blödsinn von mir...dafür ist ja die Abfrage da... ;-)


  

Betrifft: AW: Zufallsgenerator von: ransi
Geschrieben am: 28.09.2007 16:10:45

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


 

Beiträge aus den Excel-Beispielen zum Thema "Zufallsgenerator"