Seite 2 von 2

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mo, 19.03.2012 18:32
von F3K Total
Hallo,
bredfeld hat geschrieben: kann man das Kopierte auch wieder mit Doppelklick herausnehmen falls man sich im Original vertan hat ?
Stefan hat Recht:
Selbst ist der Mann/die Frau
Ein paar Tipps:
Mit einem Inspection-Tool (z.B. MRI oder Xray) könnt ihr euch den Aufbau der Tabellen in Calc, aber auch den Aufbau aller anderen OpenOffice Dokumente genau ansehen und analysieren um selbst zu Lösungen kommen.
Zum Löschen gibt es beispielsweise die Methode/Operation clearContents, die auf ganze Tabellen oder auch auf einzelne Zellen angewandt werden können. Um die Hintergrundfarbe und den Zellwert zu löschen nehme man clearContents(33).
Wenn ihr euch zusätzlich zu MRI oder Xray noch das Software Developement Kid (SDK) installiert, könnt ihr direkt aus den Inspectiontools in die Doku springen und selbst herausfinden, warum die Flag gerade in diesem Fall eine 33 ist.
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mi, 21.03.2012 11:14
von bredfeld
Jetzt meldet sich der Anfänger mal wieder mit seinem Ergebnis was sich mit hoher Sicherheit verbessern läßt. Im Moment kann ich nur einen Bereich farblich verändern, kopieren auf ein zweites Frame und dann wieder komplett Löschen.

Sub S_insert_color_and_copy_cell
nbackcolor = 65280
rem nbackcolor = 65280'44544
osel = thiscomponent.currentselection
if osel.CellBackColor <> nbackcolor then
osel.CellBackColor = nbackcolor 'hier mach ich grün
SourceCellAddress = osel.CellAddress 'Zeile ermitteln
SourceRangeAddress = osel.RangeAddress
nsheet = SourceCellAddress.sheet
TargetAddress = SourceCellAddress
TargetAddress.Sheet = nsheet+1
osheet = thiscomponent.sheets(nsheet)
osheet.copyRange(TargetAddress,SourceRangeAddress)
else osel.CellBackColor = -1
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
Doc = ThisComponent
Sheet = Doc.Sheets(1)
CellRange = Sheet.getCellRangeByName("A3:B5")
Flags = com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.HARDATTR
CellRange.clearContents(Flags)
Sheet = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$3"
dispatcher.executeDispatch(Sheet, ".uno:GoToCell", "", 0, args2())
dispatcher.executeDispatch(Sheet, ".uno:ToggleMergeCells", "", 0, Array())
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
end if
End Sub

Vielleicht kannst du mir ja noch einmal helfen ?
ciao e grazie Uwe

Re: Hintergrandfarbe automatisch ändern

Verfasst: Mi, 21.03.2012 18:25
von F3K Total
Hallo Uwe,
du hast jetzt also einen Teil von meinem Code mit einen aufgenommenen Makro verhackstückt!?.
Keine Eigenleistung? Tips ignoriert? z.B.:
F3K Total hat geschrieben:Zum Löschen gibt es beispielsweise die Methode/Operation clearContents, die auf ganze Tabellen oder auch auf einzelne Zellen angewandt werden können. Um die Hintergrundfarbe und den Zellwert zu löschen nehme man clearContents(33).
Es gibt noch viele andere Informationsquellen über die StarBasic-Programmierung:
viewtopic.php?f=18&t=1553
Dir empfehle ich zunächst StarBasic FAQ.
bredfeld hat geschrieben:Vielleicht kannst du mir ja noch einmal helfen ?
Nö! Wenn Du es nicht selber lernen möchtest.
Gruß R

Re: Hintergrandfarbe automatisch ändern

Verfasst: Do, 22.03.2012 09:33
von bredfeld
Bin doch schon dabei. Vielen Dank für die Informationsquellen. Ich merke doch selber das mir Literatur fehlt.
Das ist jetzt eine schöne Liste für Anfänger.
Jetzt kann ich ja mal loslegen.
Ciao e mille grazie