Ich hab zu deinem Problem mal einen anderen Lösungsansatz entwickelt, vielleicht kannst du dich damit anfreunden:
1.Schritt
Der Benutzer definiert in einem Zellbereich (fürs Beispiel Tabelle1.A1:A7)
eigene Kürzel[1] und weist gleich die jeweils gewünschte Hintergrundfarbe zu.
[1]Die Wahlmöglichkeit kann ja mit ->Daten->Gültigkeit eingeschränkt werden.
Im
2. Schritt-
-erstellt der folgende Code daraus Zellvorlagen benamt mit den Kürzeln in den Zellen (ich habs leider nur mit Dispatcher-code geschafft neben den Vorlagennamen auch die Formatierungen in die Zellvorlagen aufzunehmen):
Code: Alles auswählen
sub zellvorlagen
odoc = thisComponent
osheet = odoc.sheets(0)
for zeile = 0 to 6
ozell = osheet.getcellbyPosition(0,zeile)
zvorlname = ozell.string
odoc.CurrentController.Select(ozell)
neuVorlageausSelektion(zvorlname) 'Aufruf Dispatcher-function
odoc.CurrentController.Select(-1)
osheet.getcellbyPosition(0,zeile).cellstyle = zvorlname
next zeile
end sub
function neuVorlageausSelektion(vorlagenname as string)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Param"
args1(0).Value = vorlagenname
args1(1).Name = "Family"
args1(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleNewByExample", "", 0, args1())
end function
Zum "Einfärben" schreibt folgendes Makro bedingte Formatierungen in selektierte Zellbereiche (das kann aber auch in festeingestellte Zellbereiche geändert werden):
Code: Alles auswählen
Sub bedingteFormatierung()
dim BedingtFormat as Object
dim tabblatt
bereich = thisComponent.getcurrentSelection.rangeAddress
with bereich
erstSp = .startColumn
erstzei = .startRow
endSpa = .EndColumn
endZei = .EndRow
end with
dim Zellformat(3) as New com.sun.star.beans.PropertyValue
Zellformat(0).Name = "Operator"
Zellformat(0).value = com.sun.star.sheet.ConditionOperator.EQUAL
Zellformat(1).Name = "Formula1"
Zellformat(2).Name = "StyleName"
tabblatt = ThisComponent.Sheets(0)
for sp = erstSp to endSpa
for ze = erstzei to endZei
BedingtFormat = tabblatt.getcellbyPosition(sp,ze).ConditionalFormat
For bf = 0 to 6
ocell = thisComponent.sheets(0).getcellbyPosition(0,bf).string
Zellformat(1).value = chr(34) & ocell & chr(34)
Zellformat(2).value = ocell
BedingtFormat.addNew( Zellformat())
next bf
tabblatt.getcellbyPosition(sp,ze).ConditionalFormat = BedingtFormat
next ze
next sp
end sub
Gruß Karo