Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1680to1684
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-Frage

VBA-Frage
22.03.2019 21:14:24
Roman
Hallo, kann mir bitte jemand sagen, wie ich in diesem Code -Schnipsel, nicht nur 1X 6 Zufallszahlen erzeugen und in die Excel Tabelle eintragen kann? zB. 20 verschiedene Zufallszahlenblöcke, bestehend aus 6 Zahlen. Habe schon in meinem neuen VBA Buch nachgeforscht, komme aber nicht weiter. Danke.
Option Explicit
Sub Numbers()
Dim varNumbers As Variant, varRandom As Variant, lngI As Long
varNumbers = Array(3, 5, 6, 7, 8, 9, 10, 12, 13, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28, 29, 30, _
32, 36, 37, 39, 40, 41, 42, 43, 44)
varRandom = randomNumbers(varNumbers, 6)
For lngI = 0 To UBound(varRandom)
Debug.Print varRandom(lngI)
Next
End Sub

Private

Function randomNumbers(Numbers As Variant, Count As Long) As Variant
Dim varTemp() As Variant, lngI As Long, lngRnd As Long
ReDim varTemp(Count - 1)
Randomize Timer
For lngI = 0 To Count - 1
lngRnd = Int((UBound(Numbers) + 1) * Rnd)
varTemp(lngI) = Numbers(lngRnd)
Numbers(lngRnd) = Numbers(UBound(Numbers))
ReDim Preserve Numbers(UBound(Numbers) - 1)
Next
randomNumbers = varTemp
Range("A9:F9").Value = randomNumbers
Range("A9:F9").Select
Selection.Sort Key1:=Range("A9"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight, _
DataOption1:=xlSortNormal
Range("A1:F1").Value = varTemp


		

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Frage
22.03.2019 22:03:18
Sepp
Hallo Roman,
so?
Sub Numbers()
Dim varNumbers As Variant, varRandom As Variant, lngI As Long
 
varNumbers = Array(3, 5, 6, 7, 8, 9, 10, 12, 13, 16, 17, 18, 20, 23, 24, 25, 26, 27, 28, 29, 30, _
 32, 36, 37, 39, 40, 41, 42, 43, 44)

For lngI = 1 To 20
  varRandom = randomNumbers(varNumbers, 6)
  Cells(lngI + 8, 1).Resize(1, Ubound(varRandom) + 1) = varRandom
Next
End Sub

Private Function randomNumbers(ByVal Numbers As Variant, Count As Long) As Variant
  Dim objAL As Object, lngI As Long, lngRnd As Long
 
  Set objAL = CreateObject("System.Collections.Arraylist")
 
  Randomize Timer
 
  With objAL
    For lngI = 0 To Count - 1
      lngRnd = Int((Ubound(Numbers) + 1) * Rnd)
      .Add Numbers(lngRnd)
      Numbers(lngRnd) = Numbers(Ubound(Numbers))
      Redim Preserve Numbers(Ubound(Numbers) - 1)
    Next
    .Sort
    randomNumbers = .ToArray
  End With
  
  Set objAL = Nothing
End Function

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: VBA-Frage
22.03.2019 22:36:44
Roman
Hallo, Sepp! Danke für die schnelle Reaktion. Der Code funktioniert einwandfrei. Du scheinst ein wahrer VBA- Könner zu sein. Ich stehe erst am Anfang meiner VBA Kenntnisse. Bin dabei mich anhand interessanter Beispiele einzulernen. Habe mir das Buch "VBA mit Excel" von Bernd Held gekauft. Nochmals Danke, Grüße von Roman aus Wien!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige