Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
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
Zufallszahlen 0 bis 2 ohne Wiederholung
02.12.2022 18:47:25
robert
Hallo Leute,
heute mal ein dämliches Problem
Ich möchte drei Schaltflächen ZufallsTexte aus einem Array mit 3 Inhalten zuweisen.
Leider hängt sich mein Script in einer Endlosschleife auf....
Ich mach es mir sicher nur wieder zu kompliziert...
Hat jemand ne Idee?

tQuest = ThisWorkbook.Sheets("Tabelle2").Range("A" & rndAnswerRightRow)
tAnswerRight = ThisWorkbook.Sheets("Tabelle2").Range("B" & rndAnswerRightRow)
tAnswerFalse1 = ThisWorkbook.Sheets("Tabelle2").Range("B" & rndAnswerFalseRow1)
tAnswerFalse2 = ThisWorkbook.Sheets("Tabelle2").Range("B" & rndAnswerFalseRow2)
Label_Quest.Caption = tQuest
Dim rndArray(2) As String
rndArray(0) = tAnswerRight
rndArray(1) = tAnswerFalse1
rndArray(2) = tAnswerFalse2
nBut1 = Int(2 * Rnd)
'Zufalls-Falsch-Antwort-Zeile auswählen, die nicht die Richtige beinhaltet
nBut2 = Int(2 * Rnd)
If nBut2 = nBut1 Then
nBut2 = Int(2 * Rnd)
End If
nBut3 = Int(2 * Rnd)
Do While nBut3 = nBut1 Or nBut3 = nBut2
nBut3 = Int(2 * Rnd)
Loop
cb_A1.Caption = rndArray(nBut1)
cb_A2.Caption = rndArray(nBut2)
cb_A3.Caption = rndArray(nBut3)

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallszahlen 0 bis 2 ohne Wiederholung
02.12.2022 19:01:08
Daniel
HI
als erstes solltest du, wenn du Ganzzahlige Zufallszahlen haben willst, die Funktion Worksheetfunction.RandBetWeen(Kleinste, Größte) v verwenden.
dann hast du schon mal Ganzzahlen und musst nicht nicht noch rechnen.
Außerdem and RND die Eigenschaft, nach jedem Öffnen der Datei immer die selben Zufallszahlenreihe auszugeben.
Um das zu verhindern, muss man den Startwert für die Zufallzahlen einmal zufällig setzen mit dem Befehl: Randomize Timer
(Timer ist die Uhrzeit in Sekunden und sorgt dafür, dass man für die Zufallszahlenberechnung immer einen anderen Startwert hat)
zu deinem eigentlichen Problem:
eine Zufallsreihenfolge in eine Kleinen Mengen von der alle ausgewählt werden sollen erzeugt man am sichersten dadurch, dass man die Postitionen zufällig tauscht und dann der Reihe nach ausgibt:

Dim rndArray(2) As String
rndArray(0) = tAnswerRight
rndArray(1) = tAnswerFalse1
rndArray(2) = tAnswerFalse2
for i = 0 to 2
j = Worksheetfunction.RandBetween(0, 2)
X = rndArray(i)
rndArray(i) = rndArray(j)
rndArray(j) = X
Next
cb_A1.Caption = rndArray(0)
cb_A2.Caption = rndArray(1)
cb_A3.Caption = rndArray(2)
gruß Daniel
Anzeige
es reicht doch ganz einfach
02.12.2022 22:27:22
lupo1
RandArray() = "=INDEX({"Alpha";"Berta";"Cäsar"};SORTIERENNACH(SEQUENZ(3);ZUFALLSMATRIX(3)))"
Den hinteren Teil aufgezeichnet auf englisch und dann mit Evaluate.
Dann braucht man die vielen VBA-Zeilen nicht
Warum lupo, ignorierst du eigentlich
02.12.2022 22:53:37
Daniel
Immer die Versionsangabe des Fragestellers?
Weil schon viele 365 haben und 2016 angeben
02.12.2022 22:57:30
lupo1
AW: Weil schon viele 365 haben und 2016 angeben
02.12.2022 23:00:29
Daniel
Hast du da ne Statistik? ;-)
Höfliche Menschen würden ja wenigsten die für die Lösung benötigte Excelversion mit angeben, wenn sie nicht mit der Version kompatibel ist, die der Fragesteller abgegeben hat.
Willkommen Zensur ... doof, wenn man gehasst wird
03.12.2022 09:57:25
lupo1
Nix Zensur
03.12.2022 13:09:24
Daniel
Doof ist, wenn man andere hasst und dann verbal ausfällig wird.
Du hast mal wieder nichts verstanden
03.12.2022 15:15:15
lupo1
... ich würde Dir jetzt noch andere Dinge sagen, wenn man das dürfte.
Statt dessen: Hallo Hans! Wenn Du das absichtlich gelöscht hast, solltest Du überlegen, Dein Forum langsam in neue Hände zu legen. Wenn es aber ein Irrtum war, dann solltest Du die Löschung zurücknehmen.
Ich denke, dass wenigstens einer, der an der Fortführung des Threads beteiligt war, nämlich Rudi, auch nicht versteht, was hier gerade passiert ist.
Es ist einfach ein Scheißgefühl, ohne Feedback gelöscht zu werden! Das ist irgendwie wie Russland. Ich habe nicht gegen die Forumregeln verstoßen. Und Rudi auch nicht.
Anzeige
AW: Du hast mal wieder nichts verstanden
03.12.2022 15:54:06
Daniel
Wahrscheinlich gegen diese:
Für das Verfassen von Beiträgen (ob nun eigene Fragen, Lösungen oder sonstige Beiträge) sollte beachtet werden, dass man niemanden beleidigen oder anderweitig verletzen sollte.
ich habe niemanden verletzt
03.12.2022 16:13:41
lupo1
Du hingegen segelst ziemlich unverfroren durch die Lande:
Du zitierst nie. Du kennst die Ricola-Werbung nicht.
Du schreibst irgendwann, wenn andere eine Antwort schon längst gegeben haben, und wiederholst teilweise deren Aussagen, ohne Dich auf sie zu beziehen, innerhalb eines zugegeben meist kompletten und verständlichen und auch inhaltlich guten Textes. Das ist aber wissenschaftlich pfui und macht Dich völlig empathielos für uns andere Helfer. Alles, um bei den Fragern als der tolle Daniel-Darling zu gelten. Ein Gutes hat der Exitus von office-lösung: Ich muss Dich dort wenigstens nicht mehr sehen.
Und dann musst Du hier immer das letzte Wort haben, weil bei Dir zuhause die Frau eine Bratpfanne hat. Ach nein. Falsch. Da ist weder eine Bratpfanne, noch eine Frau.
Ich mag - so hat Hans mir das mal geschrieben - oft überheblich klingen. Den Schuh ziehe ich mir an. Aber ich schleime halt selten den oft schrecklichen Fragern (denen es an fast allem fehlt, auch an eigenem Willen!) ihr Problem zurecht.
Anzeige
AW: ich habe niemanden verletzt
03.12.2022 21:09:21
Daniel
ja du hast verletzt.
du merkst es halt nicht mehr.
auch in diesem Beitrag musst du ja persönlich werden und unter die Gürtellinie gehen.
konsequenterweise müsste auch dieser Beitrag gelöscht werden.
was hier im Forum passiert ist doch keine Wissenschaft, sondern Schule oder höchsten Ausbildung. insofern ist es auch nicht notwendig, wissenschaftliche Ansprüche zu stellen.
und ja, wenn ich eine Antwort schreibe, dann orientiere ich mich daran, was ich gerne als Antwort hätte, wenn ich die Frage gestellt hätte und beantworte die Frage so, wie ich mir selbst eine Antwort gewünscht hätte.
Anzeige
Aber andere greifst Du an, sie "ignorierten".
03.12.2022 21:48:27
lupo1
... ganz so heilig, wie Du Dich empfindest, bist Du also nicht.
So, ich lasse Dir, wie üblich, als Ober-Egoisten das letzte Wort. Und ob Hans mich hier löscht, ist mir egal. Soll er. Ich nehme ihn nicht mehr für voll.
nur wenn Hans dich hier löscht
03.12.2022 22:33:23
Daniel
hätte ich das letzte Wort.
wenn er dich nicht löscht, hättest du das letzte Wort gehabt
(dieser Beitrag gehört ja nicht zur eigentlichen Diskuission)
AW: Zufallszahlen 0 bis 2 ohne Wiederholung
03.12.2022 21:01:23
Yal
Hallo Robert,
dämlich ist es nicht. Ein übliche Problem.
Eine klassische Lösung geht wie folgt:
_ einmal eine Liste oder Sammlung ("Collection") mit allen Elemente bauen,
_ wiederholen:
_ _ ein Zufallszahl x zwischen 1 und den Anzahl an Elemente in der Liste würfeln,
_ _ das x-te Element aus der Collection in der Ergebnisliste aufnehmen
_ _ und aus der Collection wegnehmen.
_ bis die Collection leer ist.
Es sieht so aus:

Function Vermischer() As String
Dim Coll As New Collection
Dim E 'Element
Dim Fallschirm 'Fallschirm-Variable gegen endlose Schleife (passiert mir immer noch regelmässig ;-)
Dim Erg As String
'Collection befüllen
For Each E In Array("Richtig  ", "Falsche_1", "Falsche_2")
Coll.Add E
Next
'Collection zufällig lesen, übergeben. Gelesene Collection-Element aus der Collection entfernen
Randomize
Do While Coll.Count > 0 And Fallschirm 
Ergebnisse werden in das Direktfenster (Ansicht, Direktfenster) angezeigt.
VG
Yal
Anzeige

166 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige