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 Excel, Array anlegen

VBA Excel, Array anlegen
21.03.2019 19:34:39
Roman
Hallo, mich beschäftigt seit kurzem folgendes Problem: Ich möchte einen Lottozahlengenerator programmieren, jedoch als Array nicht immer nur einen Zahlenbereich von bis angeben, sondern verschiedene bunt zusammengewürfelte Zahlen verwenden. Auch nach der Lektüre eines VBA Buches wurde ich nicht schlauer. Vielleicht könnt Ihr mir helfen, da es so nicht funktioniert. Vielen Dank, beste Grüße von Roman aus Wien.
Option Explicit
Sub FillLottox()
Dim lngArray1(1 To 18) As Long
'Dim lngArray1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18) As Long
Dim lngArray2(1 To 6) As Long
Dim lngC, lngX As Long
'For lngC = ("1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18")
For lngC = 1 To 18
lngArray1(lngC) = lngC
Next
'Sechs Zufallszahlen aus dem Array gezogen
For lngC = 1 To 6
'Ziehe, bis ein Wert > 0 geliefert wird
Do
lngX = Int(Rnd * 18) + 1
Loop Until lngArray1(lngX) > 0
'Zahl speichern
lngArray2(lngC) = lngX
'gezogene Zahl im ersten Array mit 0 ersetzen
lngArray1(lngX) = 0
Next
'Den Inhalt des Arrays1 ausgeben
For lngC = 1 To 18
Debug.Print lngArray1(lngC),
Next
'Den Inhalt des Arrays2 ausgeben
For lngC = 1 To 6
Debug.Print lngArray2(lngC),
Next
Range("A8:F8").Value = lngArray2
Range("A7:Z7").Value = lngArray1
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel, Array anlegen
21.03.2019 20:00:40
onur
"da es so nicht funktioniert" - Was genau funktioniert nicht so, wie gewünscht? Was genau willst du überhaupt?
Gibt es nicht 49 Lottozahlen?
AW: VBA Excel, Array anlegen
21.03.2019 20:19:32
Roman
Hallo, onur! Danke für deine Antwort. Ich möchte ein "verkürztes "Spiel mit zb. 18,30 oder 36 möglichen (verschiedenen, jedoch bunt zusammengewürfelten Zahlen)spielen. Wenn ich das Array anlege mit 1 to 18, funktioniert mein Code. Wenn ich allerdings
Dim lngArray1(1 To 18) As Long
'Dim lngArray1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18) As Long
die zweite Zeile verwende, dann bekomme ich die Fehlermeldung: Fehler beim Kompilieren, Falsche Anzahl an Dimensionen.
PS: Natürlich gibt es beim Österreichischen Lotto 45 Zahlen, woraus 6 Zahlen gezogen werden, jedoch möchte ich ein System programmieren, welches nicht alle möglichen Zahlen berücksichtigt, sondern sich auf weniger Zahlen stützt (ZB: 1,4,7,9,12,15,17,18,19...… etc)
DANKE für die Hilfe!
Anzeige
AW: VBA Excel, Array anlegen
21.03.2019 20:22:50
onur

Dim lngArray1(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18) As Long 

heisst, dass du versuchst, ein 18(!)-dimensionales Array zu programmieren.
Du meinst wohl
lngArray=Array(1;2;3;4.....;18)

AW: VBA Excel, Array anlegen
21.03.2019 20:33:16
Roman
Ich habe schon beide Varianten ausprobiert, jedoch ohne Erfolg. Der Fehler scheint woanders zu liegen.
AW: VBA Excel, Array anlegen
21.03.2019 20:36:45
onur
Sorry! Komma statt Semikolon!
lngArray=Array(1,2,3,4,.....,18)
AW: VBA Excel, Array anlegen
21.03.2019 20:44:47
Sepp
Hallo Roman,
ein beispiel.
Modul Modul1
Option Explicit 
 
Sub Numbers() 
Dim varNumbers As Variant, varRandom As Variant, lngI As Long 
 
varNumbers = Array(1, 3, 7, 11, 14, 22, 23, 28, 30, 32, 37, 40) 
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 
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 Excel, Array anlegen
21.03.2019 20:59:50
Roman
Hallo, Sepp! Danke für deinen Vorschlag. Ich habe deinen Code gerade getestet---- er funktioniert. Vielen Dank. Werde mich jetzt noch etwas damit herumspielen. scheint toll zu sein. Grüße, Roman.

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige