2.1k Aufrufe
Gefragt in Tabellenkalkulation von eunes Einsteiger_in (3 Punkte)
Es geht prinzipiell darum, einen per Zufall generierten Fragenkatalog zu erstellen.

Ausgangssituation:
Es existieren mehrere xls-Dateien nach Themengebieten, z.B. Erkunde, Physik,
Mathe, Deutsch, usw.
Diese Dateien sind wie folgt gegliedert:
- Frage1
- Antwort1
- Frage2
- Antwort2

Aus diesen Dateien sollen nun per Zufall die Fragen, samt zugehörigen Antworten
ausgelesen und in eine neue Datei geschrieben werden.

Also sollte man die Dateien auswählen können, aus der die Fragen ausgelesen
werden sollen.

Alternativ könnte man die Fragen auch in einer einzelnen Excel-Tabelle mit
verschiedenen Spalten erstellen.
- Kategorie | Frage1 | Antwort1
- Kategorie | Frage2 | Antwort2

In der Auswahlmaske sollte man also die Kategorien, oder eben Dateien auswählen
können
und dann per "Knopfdruck" eine Ausgabedatei erhalten.

Habt ihr hier vielleicht ne Idee, wie ich das anstellen kann???
Bin leider völliger Newbie, was Excel-Programmierung angeht.

5 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi dumpfbacke ^^

ein Beispiel :-)

gruß nighty

Sub makro01()
Randomize Timer
Dim endeindex As Integer, allezahlen As Integer
Dim gezogen As Integer, zaehler As Integer, ziehung As Integer
Dim strAlles As String, strDaten() As String
Open Application.GetOpenFilename("Txt-Dateien (*.txt), *.txt", , "Datei auswählen", , False) For Binary As #1
strAlles = Space(LOF(1))
Get #1, , strAlles
Close #1
If Not Right(strAlles, 2) = vbCrLf Then strAlles = strAlles & vbCrLf
strDaten = Split(strAlles, vbCrLf)
ReDim zuzahl(UBound(strDaten()) / 2) As Integer
ReDim zahl(UBound(strDaten()) / 2)
endeindex = UBound(strDaten()) / 2
For allezahlen = 1 To UBound(strDaten()) Step 2
zaehler = zaehler + 1
zuzahl(zaehler) = allezahlen
Next allezahlen
For ziehung = 1 To UBound(strDaten()) / 2
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
Cells(ziehung, 1) = strDaten(zahl(ziehung) - 1)
Cells(ziehung, 2) = strDaten(zahl(ziehung))
Next ziehung
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

ops besser waere vielleicht mister x oder mister unbekannt gewesen,bin immer leicht verwirrt wenn anrede und gruß fehlt :-)

gruß nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

Kurzbeschreibung O_o

gruß nighty

ein dialogfenster fordert den benutzer auf eine xx.txt(Dateien namens Erdkunde oder mathe etc.) zu oeffnen

es wird eine einspaltige abwaertsgehende structur der Daten vorrausgesetzt

die Daten werden in ein ein dimensionales Array gesplittet übertragen

der ermittelte ende index des zuvor estellten Arrays dient der Generierung einer neuen Zahlenkolonne
z.b. 1,3,5,7 etc. ,das waere dann immer der index einer frage

ein zufallsgenerator zieht durch eine dauernde verkuerzung des Array nun alle Indexe des datenarrays durch
Darstellung auf der tabelle
0 Punkte
Beantwortet von
hi dumpfbacke ^^
sehr netter Umgangston hier
besser waere vielleicht mister x oder mister unbekannt gewesen
nö, wie wärs mit seinem Nicknamen? oder vielleicht einfach gar nichts?
jedenfalls muss man nicht beleidigend werden (und nein, dein ^^ macht es nicht besser)
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

bei bedarf aendere ich es :-)

gruss nighty
...