um das Kopfrechnen für meine Schüler etwas aufzulockern wollte ich Bingoblätter erzeugen, ein Blatt geht prima, mehrere schaffe ich nicht und ich bekomme nicht raus warum. Ich möchte euch das Problem mal an einem ganz kleinen Beispiel vorstellen: Auf Tabellenblatt1 stehen in der ersten Spalte 9 Einträge untereinander. Das Makro erzeugt auf dem Tabellenblatt2 eine Tabelle mit den 9 Einträgen in zufälliger Anordnung. Hier ist der Code:
Code: Alles auswählen
Sub Bingo
dim zeile, spalte, n, aufanz, breite, zaehl, zufall, sprung, tabanz, tab as integer
dim aufseite, binseite as object
binseite = ThisComponent.sheets.getByName("Tabelle2") 'auf dieser Seite stehen in der ersten Spalte 9 beliebeige Einträge
aufseite = ThisComponent.sheets.getByName("Tabelle1")
'hier werden diese Einträge zufällig in eine 3mal3 Tabelle eingetragen
breite=3
tabanz=10 'so viele Bingoblätter sollen erzeugt werden
aufanz=breite*breite
zaehl=aufanz
' for tab = 0 to tabanz
ThisComponent.sheets.getByName("Tabelle1").getCellRangeByName("B1:B10").clearContents(4)
'hier werden die Markierungen der benutzten Zahlen wieder gelöscht
for zeile=0 to breite-1
for spalte =0 to breite-1
zufall=fix(rnd()*zaehl+1) 'erzeugt eine Zufallszahl, die Maximalzahl wird in jeder Runde eins kleiner
sprung=zufall
for n=0 to aufanz+1
if aufseite.getCellByPosition(1,n).string<>"*" then
'hier wird überprüft, ob dieser Eintrag schon benutzt wurde
sprung=sprung-1
if sprung=0 then
'sorgt dafür, dass die per Zuallszahl bestimmte nächste ungenutzte Zahl ausgewählt wird
binseite.getCellByPosition(spalte,zeile+tab*(breite+1)).formula="=Tabelle1.A" & n+1
aufseite.getCellByPosition(1,n).string="*" 'markiert bereits verwendete Zahlen
zaehl=zaehl-1
exit for
end if
endif
next n
next spalte
next zeile
' next tab
End Sub
Grüße
Pit