....
If NOT isNull(oResult) Then
For Each cell in oResult
r = cell.celladdress.row
if osheet.getcellbyposition(5 , r-2).string = "" then
goto Label_1'<- Zeile geändert
else
orows.insertbyindex( r , 2 )
osheet.getcellrangebyposition( 0 , r , 99 , r +1).cellstyle = "Standard"
end if
Label_1: '<- Zeile hinzugefügt
Next cell
....
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Ich habe mal etwas an dem Makro verändert und nun fügt es auf jeder Tabelle 2 Leerzeilen über Gesamtergebnis ein.
Allerdings immer wieder, falls es nochmals gestartet wird, ich habe die Überprüfung herausgenommen, da damit gar nichts mehr geht.
Jetzt geht es wenigstens das er es auf allen Tabellen macht.
Sub Main
oDoc = thisComponent
for i = 0 to odoc.sheets().count() -1
oSheet = oDoc.Sheets( i )
orows = osheet.getrows
oRange = oSheet.getCellRangeByName( "A1:Z60000" )
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull( oResult ) then
For each cell in oResult
orows.insertbyindex( cell.celladdress.row , 2 )
osheet.getcellrangebyposition( 0 , cell.celladdress.row -2 , 99 , cell.celladdress.row -1).cellstyle = "Standard"
Next cell
End If
next i
end sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Ich habe das Makro noch ein mal geändert, aber der Fehler besteht immer noch, wenn die Schleife drin ist, die überprüft ob schon 2 Zeilen drüber sind.
Und die Aktuelle Version, ist ohne diese Überprüfung, allerdings funktioniert sie auf allen Tabellen perfekt (und nun muss auch nur noch eine Zeile eingefügt werden.) Aber ich brauche auch diese Überprüfung. Weil das Dokument nicht immer Vollständig erstellt wird und auch mal gespeichert und später wieder bearbeitet wird.
Sub Main
oDoc = thisComponent
for i = 0 to odoc.sheets().count() -1
oSheet = oDoc.Sheets( i )
orows = osheet.getrows
oRange = oSheet.getCellRangeByName( "A1:Z60000" )
oSearchDesc = oSheet.createSearchDescriptor
oSearchDesc.SearchString = "Gesamtergebnis"
oSearchDesc.searchWords = True
oResult = oRange.findAll(oSearchDesc)
If NOT isNull( oResult ) then
For each cell in oResult
orows.insertbyindex( cell.celladdress.row , 1 )
osheet.getcellrangebyposition( 0 , cell.celladdress.row -1 , 99 , cell.celladdress.row -1).cellstyle = "Standard"
Next cell
End If
next i
end sub
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
MikeRo hat geschrieben:Ich habe das Makro noch ein mal geändert, aber der Fehler besteht immer noch, wenn die Schleife drin ist, die überprüft ob schon 2 Zeilen drüber sind.
Es wäre für die Zukunft vielleicht hilfreich, wenn Du wenigstens sagen würdest, was für ein Fehler überhaupt auftritt.
(...)ich habe die Überprüfung herausgenommen, da damit gar nichts mehr geht.
Mit so einer Fehlerbeschreibung kann man, oder zumindest ich, herzlich wenig anfangen.
For each cell in oResult
nRow = cell.celladdress.row
nCol = cell.celladdress.column
If Len(oSheet.getCellByPosition(nCol,nRow-1).String) > 0 Then
orows.insertbyindex( nRow , 1 )
osheet.getcellrangebyposition( 0 , nRow -1 , 99 , nRow -1).cellstyle = "Standard"
End If
Next cell
Das Problem ist, dass er mit der Überprüfung nur in der ersten Tabelle eine Zeile über Gesamtergebnis hinzufügt und alle anderen nicht weiter beachtet, egal wie oft ich es ausführe und mein eigenes Makro wird danach auch nicht mehr gestartet. In der Version ohne die Überprüfung geht es in jeder Tabelle da wird Gesamtergebnis verrückt und Ergebnis gelöscht.
MikeRo hat geschrieben:Das Problem ist, dass er mit der Überprüfung nur in der ersten Tabelle eine Zeile über Gesamtergebnis hinzufügt und alle anderen nicht weiter beachtet
Dann stimmt was mit deinen Tabellen nicht, ich habe das von Dir gepostete Makro ergänzt mit der Überprüfung einfach hier rauskopiert und es macht haargenau das, was Dir vorschwebt - und zwar (logischerweise, schliesslich läuft das Ganze in einer Schleife) in allen Tabellen.
MikeRo hat geschrieben:Das Problem ist, dass er mit der Überprüfung nur in der ersten Tabelle eine Zeile über Gesamtergebnis hinzufügt und alle anderen nicht weiter beachtet
Dann stimmt was mit deinen Tabellen nicht, ich habe das von Dir gepostete Makro ergänzt mit der Überprüfung einfach hier rauskopiert und es macht haargenau das, was Dir vorschwebt - und zwar (logischerweise, schliesslich läuft das Ganze in einer Schleife) in allen Tabellen.
Danke für die Hilfe, es geht jetzt, das einzige Problem ist noch, das nun die Zeilen drüber nicht die Standartformatierung haben, sondern die vom Ergebnis.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
MikeRo hat geschrieben:das einzige Problem ist noch, das nun die Zeilen drüber nicht die Standartformatierung haben, sondern die vom Ergebnis.
Was meinst Du mit "nun"? Wenn die Formatierung vorher zurückgesetzt wurde, wird sie das auch jetzt noch.
Oder hat das Zurücksetzen gar nicht erst funktioniert?
MikeRo hat geschrieben:das einzige Problem ist noch, das nun die Zeilen drüber nicht die Standartformatierung haben, sondern die vom Ergebnis.
Was meinst Du mit "nun"? Wenn die Formatierung vorher zurückgesetzt wurde, wird sie das auch jetzt noch.
Oder hat das Zurücksetzen gar nicht erst funktioniert?
Doch eigentlich ging es vorher. Nun übernimmt er für die neue Zeile, die Formatierung der Zeile darüber.
Ich habe es mal einfach in einem neuen Dokument getestet.