Clever-Excel-Forum

Normale Version: Zufallsgenerator zum Lernen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ihr Lieben,

ich würde gerne über Excel ein Zufallsgenerator fürs "Lernen" erstellen. Insgesamt habe ich 40 Arbeitsblätter, auf denen jeweils eine Karteikarte drauf ist. Per CommandButton möchte ich gerne per Zufall auf eine der 40 Arbeitsblätter (= Karteikarte) kommen. Diesen CommandButton würde ich gerne auf allen Arbeitsblättern (=Karteikarten) haben, damit ich ohne viel Aufwand zur nächsten Karteikarte komme. Ziel ist also das zufällige Lernen von Karteikarten in Excel. Ich hoffe das ich mich verständlich ausdrücke :) 

Leider weiß ich nicht genau, wie ich das machen könnte. da ich keine Erfahrung mit VBA habe. Hat jemand eventuell eine Idee, wie man das Umsetzen könnte? Ich würde mich sehr darüber freuen :)

Vielen lieben Dank und Grüße,

Korbi
Hallo Korbi.

Du brauchst dafür eine simples VBA Makro:

           Option Explicit
           Sub Zufallszahl()
           Range("Z999").Formula = "=RANDBETWEEN(1,40)"
           MsgBox "Tabelle" & Range("Z999")
           End Sub

Es benutzt dafür als Zwischenspeicher die Zelle Z999 in der Erwartung, dass Du die noch nicht benutzt und so nichts zerstört wird. 

Jetzt brauchst Du in jeder Tabelle eine Schaltfläche zum Starten des Makro. Es liefert Dir eine der zufällig ausgewählten Tabellen 1 bis 40. Wenn zufällig die gleiche tabelle geliefert wird, musst Du es weiderholen ..

In einem leeren Beispiel habe ich das mal für die ersten beiden Tabelle in Spalte O umgesetzt. Wenn Du noch gar keine Ahnung von VBA hast, darfst Du mir Dein Tabellenblatt zuschicken und ich baue es dort ein.

Die Lösung ist erst mal sehrt simpel um zu sehen, ob die Lösung in etwa Deinen Erwartungen entspricht. 

LG Peter
Hallo,

dafür brauchst du weder 40 Blätter, noch VBA ...

In Spalte A die Fragen von A1 bis A40 ... in Spalte B die Antworten von B1 bis B40. Die Spalten A und B ausblenden.

Formel in E2: =ZUFALLSBEREICH(A1;A40)

Formel in G2: =INDEX(A1:A40;E2;1)
Formel in G4: =INDEX(A1:A40;E2;2)

G4 mit der Schriftfarbe des Hintergrundes formatieren.

in G6 ein DropDown aus Daten --> Datenüberprüfung --> in Zulassen: -> Liste --> in Quelle: -> =G4

Eine neue Frage wird mit der F9-Taste angezeigt.
@PAnderson,

das ist schon so ähnlich wie ich es haben möchte :) Vielen Dank. Eine Kleinigkeit fehlt mir jedoch noch: ich würde es gerne so wollen, dass ich automatisch auf dem Arbeitsblatt lande und nicht, dass mir Excel sagt, auf welches Arbeitsblatt ich gehen soll. Kriegst du das irgendwie hin oder hast ein Tipp? :)


@Flotter Feger:

auch dir vielen Dank :) Auch eine elegante Lösung. Danke
@PAndersen:
Ohne Würdigung, ob der Dateiaufbau sinnvoll ist: Ich würde hier nicht den Umweg über eine Zelle gehen, sondern die Zufallszahl direkt ermitteln und verwenden:
Code:
Sub TabellePerZufall()
    'Wenn die ersten 40 Tabellen in der Datei die Aufgaben enthalten:
    Sheets(WorksheetFunction.RandBetween(1, 40)).Activate
End Sub
Ich würde auf keinen Fall auf jedes Blatt einen Button setzten. Ich würde es eher in ein Menüband integrieren oder einer Tastenkombination zuweisen (z.B. OnKey bei Workbook_Open).
Hallo zusammen,

in meinem Post oben, hat sich natürlich wieder mal ein Schreibfehler eingeschlichen ... zefix ...

Es muss natürlich heißen:

Formel in E2: =ZUFALLSBEREICH(1;40) ... oder Formel in E2: =ZUFALLSBEREICH(ZEILE(A1);ZEILE(A40))
Moin!
Da ich davon ausgehe, dass einem Lernwilligen 40 "Karteikarten" aka Tabellenblätter irgendwann zu wenig sind und man nicht immer den Code ändern will …
Aufbauend auf Steuerfuzzis Code dann halt:
Code:
Worksheets(WorksheetFunction.RandBetween(1, Worksheets.Count)).Activate

Gruß Ralf