zufallsgenarator

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: zufallsgenarator

generator

von wegomyway » Do, 11.01.2007 23:07

ist versprochen ..... :wink:
edit : ist eingefügt , nach einem 200tipp-marathon erschien die schicke meldung .... und ob das projekt zurück gestzt werden soll .... also auch deine mühen sind , wie die von allen hier, belohnt worden .... supisache das ganze .... :D

von Karolus » Do, 11.01.2007 22:44

Hej

Na endlich :D - war ja ne schwere Geburt - und Prost.

Gruß Karo

ps. aber du versucht bei Gelegenheit "meinen" kleinen Beitrag hinzuzufügen - gell ??

generator

von wegomyway » Do, 11.01.2007 22:28

REM ***** BASIC *****

Sub ZufallsZelle
Dim bWEITERSUCHEN as Boolean

' alle Tabellen dieser CALC-Datei
oAlleTAB = ThisComponent.getSheets()

' Tabelle bestimmen
oTabelle = oAlleTAB.getByName( "Tabelle1" )

' Endlosschleife
' zur Sicherheit nach 1000 Durchläufen abbrechen
bWEITERSUCHEN = TRUE
i = 1
idxZeile = 0

Do
' Zufallswert ermitteln
iZUFALL = Zufall_1_bis_200()

if iZUFALL = 0 then
msgbox "Fehler Zufallsbereich 1 bis 200"
exit sub
else
oInhalt =_
oTabelle.getCellByPosition( 1, iZUFALL - 1).getString()

bis genau dahin hab ich alles was ich in jeder zeile als leere felder am ende vorhanden war gelöscht .... und gespeichert und dann das macro ausgeführt .... jupiiii .... es wurde soeben die zahl 158 gewählt und das entsprechende datum dazu ..... supi liebe leutz , das ihr hier so super geholfen habt und auch ein wenig , oder auch mehr , an geduld aufgebracht habt ..... auf euch alle ein schwarzes ........ köstritzer ..... :mrgreen:
ne frage ist da trotzdem noch ... in dem hinweisfenster steht drin "anzahl versuche 1 , heute wurde blatt 155 gewählt" es bleibt immer die zahl 1 für die versuche .... der rest funktioniert ....

von komma4 » Do, 11.01.2007 22:02

Klar, das hilft!
Ich tippe auf ein Leerzeichen hinter

Code: Alles auswählen

Function Zufall_1_bis_200()
Dim oPSM
oPSM = _ 
Der Basic-Editor ist auch ein Editor: nutze die Suchfunktion zum Aufspüren der UnterstrichLeerstelle-Kombinationen im Code.

Habe hier gerade ein Dutzend Durchläufe probiert: nach OOo Neustart, Dokument geöffnet per Datei>Öffnen, Zuletzt benutzte Dokumente oder von der Oberfläche (KDE) durch "Doppelklick": funktioniert...

War es das nun?



:-)

von Karolus » Do, 11.01.2007 21:55

Hallo
Wenn die Formel so funktioniert, kann es daran nicht liegen, daher nochmal die Frage : Ist der Bereich : B1:B200 in Tabelle1 deines Testdokuments leer ?
Hast du Spalte B vielleicht ausgeblendet ?

Gruß Karo

generator

von wegomyway » Do, 11.01.2007 21:29

das open-paket ist vollständig installiert worden , ohne ausnahme ...
habe den code mal in a1 kopiert und entertaste .... als ergebnis erscheint 1396 ... hilft das weiter :?:

von komma4 » Do, 11.01.2007 20:48

Du hast das Analyse-Add-In installiert?

Schreibe in eine Zelle

Code: Alles auswählen

=ZUFALLSBEREICH(1;2000)
und drücke die EIngabetaste. Wird die Funktion ausgeführt?

zufallsgenerator

von wegomyway » Do, 11.01.2007 20:37

also ich beschreib mal mein vorgehen . zuerst calc geöffnet , die neue datei als test gespeichert . den code von hier kopiert , dann extras , macros , verwalten , openoffice.org basic , dort ist dann meine gespeicherte datei vorhanden , da klich ich rauf , und dann auf neu und ich kann das ganze einfügen ( nehme von der vorlage die drei zeilen raus und füge den code hier ein .... sieht dann so aus

REM ***** BASIC *****

Sub ZufallsZelle
Dim bWEITERSUCHEN as Boolean

' alle Tabellen dieser CALC-Datei
oAlleTAB = ThisComponent.getSheets()

' Tabelle bestimmen
oTabelle = oAlleTAB.getByName( "Tabelle1" )

' Endlosschleife
' zur Sicherheit nach 1000 Durchläufen abbrechen
bWEITERSUCHEN = TRUE
i = 1
idxZeile = 0

Do
' Zufallswert ermitteln
iZUFALL = Zufall_1_bis_200()

if iZUFALL = 0 then
msgbox "Fehler Zufallsbereich 1 bis 200"
exit sub
else
oInhalt = _
oTabelle.getCellByPosition( 1, iZUFALL - 1).getString()
end if

' Inhalt kontrollieren
if oInhalt = "" then
' leer: eintragen
oTabelle.getCellByPosition( 1, iZUFALL - 1 ).setString( date() )
' Schalter
bWEITERSUCHEN = FALSE
else
i = i + 1
end if

if i > 1000 then
msgbox "Keinen Zufallstreffer erreicht"
exit sub
end if

Loop While ( bWEITERSUCHEN = TRUE )

msgbox "Anzahl Versuche: " & i & CHR(13) & "Heute wurde Blatt " & iZUFALL & " gewählt"

End Sub


' ---------------------------------------------------
Function Zufall_1_bis_200()
Dim oPSM
oPSM = _
GetProcessServiceManager().createInstance( "com.sun.star.sheet.FunctionAccess" )

on error goto errZufall

' Funktion aus dem Analyse-Addin
Zufall_1_bis_200 = oPSM.callFunction("ZUFALLSBEREICH", Array(1,200) )
exit Function

' bei einem Fehler der Funktion 0 (null) zurückgeben
errZufall:
Zufall_1_bis_200 = 0

End Function

das ganze geispeichert , datei pro forma geschlossen wieder geöffnet und über extras , macros , ausführen , dann auf die datei test dort ins modul und die unterlegte dann ausführen
da kommt nun "fehler zufallsbereich 1-200"
ich hab auch schon die zahlen in spalte a oder auch c gepackt , der gleiche fahler :oops:

irgendwie kriegt ich graue haare .... :lol:

von Karolus » Do, 11.01.2007 18:42

Hallo
aber als meldung erscheint wenn ich das ausführe "keine zufallstreffer erreicht"
Dann lösch erstmal den Bereich B1:B200, oder Starte das Makro in einem neuen leeren Tabellendokument.

Gruß Karo

generator

von wegomyway » Do, 11.01.2007 18:22

da hab ich wieder nicht richtig gelesen .... karolus hatte das was du mir als ratschlag gegeben hast auch schon erwähnt :oops:
es kam nach der beseitigung dieses problemes weiter unten gleich die nächste fehlermeldung die sich aber als das gleiche , ein unterstrich am ende einer zeile herausstellte und beseitigt wurde ... nun läuft das ganze durch , also nur der große code ohne den kleineren teil eingefügt zu haben , aber als meldung erscheint wenn ich das ausführe "keine zufallstreffer erreicht"

von komma4 » Do, 11.01.2007 17:10

Die Unterstriche am Ende von Zeilen sind Fortsetzungszeichen, die bedeuten, dass die Anweisung in der nächsten Zeile weiter geht.

Hinter den Unterstrichen darf kein Zeichen, auch keine Leerstelle, mehr stehen. Prüfe das bitte mal.

Alternativ -wie schon Karolus schrieb - eine Zeile daraus machen:

Code: Alles auswählen

msgbox "Anzahl Versuche: " & i & CHR(13) & "Heute wurde Blatt " & iZUFALL & " gewählt" 

zufallsgenerator

von wegomyway » Do, 11.01.2007 16:53

also ich hab das ganze in der letzten nacht masl angegangen .... so wie geschrieben wurde per copy usw. , das hat auch alles soweit geklappt .... eine schaltfläche einfügen ist auch ok , da zuweisen der schaltfläche zum acro "erlese" ich mir und dann geht das auch ... aber , ein problem bleibt bzw. ist bei mir vorhanden .... wenn ich das macro ausführe bleibt es genau folgend an der klammer nach der "13" stehen und meldet einen "vba-syntaxfehler unerwartetes symbol: &" und das war es .... es ist diese stelle

msgbox "Anzahl Versuche: " & i & _
CHR(13) & "Heute wurde Blatt " & iZUFALL & " gewählt"

hab das ganze in einem leeren blatt genauso wie die ausgefüllte spalte mit den zahlen probiert , auch als gespeicherte datei tritt dieser fehler auf :(

zufallsgenerator

von wegomyway » Mi, 10.01.2007 18:42

ja , das mit dem copy hab ich mir auch schon überlegt .... und dann kam mir die erleuchtung .... auf arbeit hab ich nix mit internet .... aber ich hab den internet-sammler drauf .... da hab ich das ganze hier , also die komplette seite einfach gespeichert ... und schon hab ich die vorlage bzw. vorgabe auf dem rechner und kann das entsprechend angehen ... das wird ein spass .... thx :)

von Eddy » Mi, 10.01.2007 17:20

Hallo wegomyway,
.... da muss ich ja schon beim tippen aufpassen das ich da bloß nicht was vergesse oder so ....
von mir nur ein Tipp... Den Code kannst Du markieren, in die Zwischenablage einstellen und dann kopieren.

Mit unkopierten Grüßen

Eddy

von Karolus » Mi, 10.01.2007 17:18

Hallo
das ganze werd ich mir mal zu papier bringen und mich daran setzen .... da muss ich ja schon beim tippen aufpassen das ich da bloß nicht was vergesse oder so ....
Also ich wäre jetzt einfach viel zu faul das alles einzutippen, ist auch fehleranfällig wenn man noch nicht weiss worauf man achten muss.
Einfach copy und paste ins Basic-fenster, dort in Ruhe durchlesen, und erstmal in einem leeren Testdokument starten, evtl. bekommst du noch ein paar Fehlermeldungen in den Zeilen die mit _Unterstrich enden, füge diese dann mit der folgenden Zeile zusammen und entferne den _Unterstrich.

Gruß Karo

Nach oben