VBA - Zufallszahlen
04.11.2017 12:05:53
Maya
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