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
irgendwie kriegt ich graue haare ....

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: