Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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
Inhaltsverzeichnis

VBA - Zufallszahlen

VBA - Zufallszahlen
04.11.2017 12:05:53
Maya
Hi,
ich habe im Netz ein Makro gefunden um Zufallszahlen zu erstellen.
Funktioniert ausgezeichnet und ist auch sehr schnell.
Allerdings sollte ich Hilfe haben beim umschreiben des Makros.
Das Makro soll sich nämlich auf einen bestimmten Bereich (bzw. 3 ) auswirken und soll die Zahlen von 1 bis 120 umfassen.
Bitte schaut in die Tabelle, dort ist es besser ersichtlich.
https://www.herber.de/bbs/user/117425.xlsx
LG Maya
Hier noch das Makro: ' ********************************************************************** ' Modul: Modul1 Typ: Allgemeines Modul Option Explicit Sub ZufallszahlenOhneDopplerInSpalteB() Dim varNumbers As Variant, varInput As Variant On Error GoTo ErrExit varInput = Application.InputBox("Zahlenbereich eingeben - Format: (n n)", "Zufallszahlen", Type: _ =2) If VarType(varInput) vbBoolean Then varNumbers = randomNumbers(CLng(Split(varInput, " ")(0)), CLng(Split(varInput, " ")(1))) With Sheets("Tabelle1") .Range("B2:B" & .Rows.Count) = "" .Range("B2").Resize(UBound(varNumbers) + 1) = Application.Transpose(varNumbers) End With End If Exit Sub ErrExit: MsgBox "Falsche Eingabe!" End Sub Private Function randomNumbers(ByVal lowerLimit As Long, upperLimit As Long, Optional Count As _ Long = -1) As Variant Dim vntTmp() As Variant, lngNumbers() As Long, lngC Dim lngIndex As Long, lngCount As Long, lngRnd As Long lngCount = upperLimit - lowerLimit + 1 If Count > 0 Then lngC = Count - 1 Else lngC = lngCount - 1 End If ReDim lngNumbers(1 To lngCount) ReDim vntTmp(lngC) For lngIndex = 1 To lngCount lngNumbers(lngIndex) = lowerLimit + lngIndex - 1 Next Randomize Timer For lngIndex = 0 To lngC lngRnd = Int(UBound(lngNumbers) * Rnd + 1) vntTmp(lngIndex) = lngNumbers(lngRnd) lngNumbers(lngRnd) = lngNumbers(UBound(lngNumbers)) If UBound(lngNumbers) > 1 Then ReDim Preserve lngNumbers(1 To UBound(lngNumbers) - 1) Next randomNumbers = vntTmp End Function

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zufallszahlen bis 20 oder bis 120 ?
04.11.2017 12:28:26
Matthias
Hallo
Was soll denn mit der/den Zufallszahlen passieren?
In etwa so
Tabelle1

 DEFGHIJKLMNOPQR
4121416181101   111111
5222426282102   222222
6323436383103   333333
7424446484104   444444
8525456585105   555555
9626466686106   666666
10727476787107   777777
11828486888108   888888
12929496989109   999999
131030507090110   101010101010
141131517191111   111111111111
151232527292112   121212121212
161333537393113   131313131313
171434547494114   141414141414
181535557595115   151515151515
191636567696116   161616161616
201737577797117   171717171717
211838587898118   181818181818
221939597999119   191919191919
2320406080100120   202020202020


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Ich hab mal im ersten Block wirklich 120 Zahlen genommen, und den zweiten Block so gelassen
Da kann man dann auch nur Zahlen bis 20 generieren.
Müssen Doppelte ausgeschlossen werden, oder nicht?
Ich habe für die Blöcke Namen definiert
Block1, Block2 und Block3
Option Explicit
Sub Zufall1()
Dim Rng As Range, zZ&, x&
Randomize Timer
Range("Block1").Interior.Color = xlNone
For x = 1 To 6
zZ = Int((120 * Rnd) + 1)
For Each Rng In Range("Block1")
If zZ = Rng Then Rng.Interior.Color = vbCyan
Next
Next x
End Sub
Sub Zufall2()
Dim Rng As Range, zZ&
Randomize Timer
Range("Block2").Interior.Color = xlNone
zZ = Int((20 * Rnd) + 1)
For Each Rng In Range("Block2")
If zZ = Rng Then Rng.Interior.Color = vbYellow
Next
End Sub
Sub Zufall3()
Dim Rng As Range, zZ&
Randomize Timer
Range("Block3").Interior.Color = xlNone
zZ = Int((20 * Rnd) + 1)
For Each Rng In Range("Block3")
If zZ = Rng Then Rng.Interior.Color = vbYellow
Next
End Sub

Bei Block1 können momentan noch Doppler vorkommen.
Gruß Matthias
Anzeige
AW: VBA - Zufallszahlen
04.11.2017 12:41:06
Maya
Danke Matthias, Danke Sepp.
Ihr seid Klasse.
Tschüss Maya

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige