von Karolus » Sa, 04.11.2006 15:05
Hallo Wutzebub
Ich hab dir den Code jetzt noch mal umgeschrieben in eine Sub, dh. du kannst sie direkt über eine Schaltfläche aufrufen,
Die Zahlen werden ab der aktuell selektierten Zelle untereinander eingetragen, in den Zellen rechts daneben werden dann zufällige Zellinhalte aus Spalte A ausgegeben.
Die Anzahl der "Lottozahlen" und die Einstellungen des Auswahlbereiches kannst du direkt in den entsprechenden Zeilen am Anfang des Codes verändern.
Falls du
nur Zahlen oder
nur Namen möchtest, kommentier die nichtgewünschte Ausgabe einfach aus.
Code: Alles auswählen
sub Lottozahlen
'"x" aus dem Zahlenbereich "von" "bis"
x = 11 '← hier eigene Werte eintragen
von = 1 '← hier eigene Werte eintragen
bis = 180 '← hier eigene Werte eintragen
Dim zahlen(x-1) As Integer, i As Integer, j As Integer
Dim gefunden As Boolean, msg As Variant
if x > bis - von +1 then
msgbox("Fehler : Anzahl der Lottozahlen ist größer als Auswahlbereich",3)
exit sub
end if
odoc = thisComponent
mysheet=odoc.currentcontroller.activesheet
Zellaktuell=odoc.getCurrentSelection().getCellAddress()
oRow=Zellaktuell.Row
oColumn=Zellaktuell.column
Zellaktuell=mysheet.getCellByPosition(ocolumn,orow)
nrow = orow + i
Zellziel=mysheet.getCellByPosition(ocolumn,nrow)
zielname=mysheet.getCellByPosition(ocolumn+1,nrow)
i = 0
zahlen(0) = Int((bis - von+1) * Rnd) + von
msg = zahlen (0)
'Nicht gewünschte Ausgabe auskommentieren
Zellziel.value = msg 'Zahlenausgabe in Spalte ocolumn
zielname.formula = "=A"&msg 'Zufällige Inhalte aus Spalte A in Spalte ocolumn+1
Do
i = i + 1
nrow = orow + i
Zellziel=mysheet.getCellByPosition(ocolumn,nrow)
zielname=mysheet.getCellByPosition(ocolumn+1,nrow)
gefunden = False
zahlen (i) = Int((bis - von+1) * Rnd) + von
For j = 0 To i - 1
If zahlen (j) = zahlen (i) Then
i = i - 1
gefunden = True
Exit For
End If
Next j
If Not gefunden Then msg = zahlen (i)
'Nicht gewünschte Ausgabe auskommentieren
Zellziel.value = msg 'Zahlenausgabe in Spalte ocolumn
zielname.formula = "=A"& msg 'Zufällige Inhalte aus Spalte A in Spalte ocolumn+1
Loop Until i = x-1
End sub
Gruß Karo
Hallo Wutzebub
Ich hab dir den Code jetzt noch mal umgeschrieben in eine Sub, dh. du kannst sie direkt über eine Schaltfläche aufrufen,
Die Zahlen werden ab der aktuell selektierten Zelle untereinander eingetragen, in den Zellen rechts daneben werden dann zufällige Zellinhalte aus Spalte A ausgegeben.
Die Anzahl der "Lottozahlen" und die Einstellungen des Auswahlbereiches kannst du direkt in den entsprechenden Zeilen am Anfang des Codes verändern.
Falls du [b]nur[/b] Zahlen oder [b]nur[/b] Namen möchtest, kommentier die nichtgewünschte Ausgabe einfach aus.
[code] sub Lottozahlen
'"x" aus dem Zahlenbereich "von" "bis"
x = 11 '← hier eigene Werte eintragen
von = 1 '← hier eigene Werte eintragen
bis = 180 '← hier eigene Werte eintragen
Dim zahlen(x-1) As Integer, i As Integer, j As Integer
Dim gefunden As Boolean, msg As Variant
if x > bis - von +1 then
msgbox("Fehler : Anzahl der Lottozahlen ist größer als Auswahlbereich",3)
exit sub
end if
odoc = thisComponent
mysheet=odoc.currentcontroller.activesheet
Zellaktuell=odoc.getCurrentSelection().getCellAddress()
oRow=Zellaktuell.Row
oColumn=Zellaktuell.column
Zellaktuell=mysheet.getCellByPosition(ocolumn,orow)
nrow = orow + i
Zellziel=mysheet.getCellByPosition(ocolumn,nrow)
zielname=mysheet.getCellByPosition(ocolumn+1,nrow)
i = 0
zahlen(0) = Int((bis - von+1) * Rnd) + von
msg = zahlen (0)
'Nicht gewünschte Ausgabe auskommentieren
Zellziel.value = msg 'Zahlenausgabe in Spalte ocolumn
zielname.formula = "=A"&msg 'Zufällige Inhalte aus Spalte A in Spalte ocolumn+1
Do
i = i + 1
nrow = orow + i
Zellziel=mysheet.getCellByPosition(ocolumn,nrow)
zielname=mysheet.getCellByPosition(ocolumn+1,nrow)
gefunden = False
zahlen (i) = Int((bis - von+1) * Rnd) + von
For j = 0 To i - 1
If zahlen (j) = zahlen (i) Then
i = i - 1
gefunden = True
Exit For
End If
Next j
If Not gefunden Then msg = zahlen (i)
'Nicht gewünschte Ausgabe auskommentieren
Zellziel.value = msg 'Zahlenausgabe in Spalte ocolumn
zielname.formula = "=A"& msg 'Zufällige Inhalte aus Spalte A in Spalte ocolumn+1
Loop Until i = x-1
End sub
[/code]
Gruß Karo