von komma4 » Mi, 24.08.2011 11:22
Vorab:
Vorlagen verwenden finde ich gut!
Habe trotzdem noch eine Makro-Lösung, schnell angepasster Code (aus meinem Makro
colorSelection)
Hier wird nicht abwechselnd eingefärbt, sondern für die Auswahl (eine Zelle, mehere Zellen oder Zellbereich) die gleiche Farbe eingestellt.
Zum Ändern der Farbe die RGB (Rot-, Grün-, Blau-)Werte in der Zeile
lEvenColor = RGB(148,188,88) anpassen.
Code: Alles auswählen
Sub colorCalcCellsSelection
sModulName = "wr CALC Modul"
sModulSubName = "1colorCalc CellsSelection"
sModulVersion = "20040812"
sModulVersion = "20110824"
oDoc = ThisComponent
If Not oDoc.supportsService(_
"com.sun.star.sheet.SpreadsheetDocument" ) Then
MsgBox _
"Makro wurde nicht von einem Calc-Dokument aufgerufen." & CHR(10) _
& CHR(10) & "Erklärung:" _
& CHR(10) & "Dieses Makro setzt vordefinierte Farben in den benutzten" _
& CHR(10) & "Zellbereich des aktuellen Blatts oder in alle Blätter " _
& CHR(10) & "bei CALC-Dateien und funktioniert nur dort." _
& CHR(10) _
& CHR(10) & "Makro " & sModulSubName & " wird nun beendet." _
, 48 , sModulName & sModulVersion
Exit Sub
End If
' get selection
oSel = oDoc.getCurrentSelection
' selection of cells?
If Not oSel.supportsService(_
"com.sun.star.table.CellProperties" ) Then
MsgBox _
"Keine Auswahl getroffen." & CHR(10) _
& CHR(10) & "Erklärung:" _
& CHR(10) & "Dieses Makro setzt eine Zellhintergrundfarbe" _
& CHR(10) & "in ausgewählten Zellbereichen." _
& CHR(10) & "Die momentane Auswahl ist aber kein Zellbereich." _
& CHR(10) _
& CHR(10) & "Makro " & sModulSubName & " wird nun beendet." _
, 48 , sModulName & sModulVersion
Exit Sub
end if
' RGB: Red/Green/Blue portion of color
' values could range from 0 to 255
' see Tools > OpenOffice.org > Colors for values
' 0,0,0: Black
' 255,255,255: White
'
' verwendete Farbe
lEvenColor = RGB(148,188,88)
' one or more selected cell ranges?
If Not oSel.supportsService(_
"com.sun.star.table.CellRange" ) Then
' more than one range
' get addresses
vRanges = oSel.getRangeAddresses
' loop for all selections
for j = 0 to uBound(vRanges)
' range of looping selection
oCellRangeAdr = vRanges(j)
' address
PROC_prepareAdr
' do it
PROC_colorSelection
next j
else
' one selection
' range of one selection
oCellRangeAdr = oSel.getRangeAddress
' address
PROC_prepareAdr
' do it
PROC_colorSelection
end if
End Sub
' -------------------------------------------------------------------
Sub PROC_prepareAdr
' get sheet
actSheet = oDoc.Sheets.getByIndex(oCellRangeAdr.Sheet)
' set start / end
lStartCol = oCellRangeAdr.StartColumn
lStartRow = oCellRangeAdr.StartRow
lEndCol = oCellRangeAdr.EndColumn
lEndRow = oCellRangeAdr.EndRow
End Sub
' -------------------------------------------------------------------
Sub PROC_colorSelection
' step 1: apply even color to all cells of all selected regions
' this is for performance purposes
actRange = _
actSheet.getCellRangeByPosition(lStartCol,lStartRow,lEndCol,lEndRow)
actRange.setPropertyValue("CellBackColor", lEvenColor)
End Sub
Querverweise
http://www.ooowiki.de/MakrosInstallieren
http://www.ooowiki.de/MakrosMitEinemKlick
Viel Spass mit OOo!
Vorab:
[b]Vorlagen verwenden finde ich gut!
[/b]
Habe trotzdem noch eine Makro-Lösung, schnell angepasster Code (aus meinem Makro [url=http://www.re-solutions.de/ooo/makros/calc_colorSelection.sxc]colorSelection[/url])
Hier wird nicht abwechselnd eingefärbt, sondern für die Auswahl (eine Zelle, mehere Zellen oder Zellbereich) die gleiche Farbe eingestellt.
Zum Ändern der Farbe die RGB (Rot-, Grün-, Blau-)Werte in der Zeile [color=#008000]lEvenColor = RGB(148,188,88) [/color] anpassen.
[code]Sub colorCalcCellsSelection
sModulName = "wr CALC Modul"
sModulSubName = "1colorCalc CellsSelection"
sModulVersion = "20040812"
sModulVersion = "20110824"
oDoc = ThisComponent
If Not oDoc.supportsService(_
"com.sun.star.sheet.SpreadsheetDocument" ) Then
MsgBox _
"Makro wurde nicht von einem Calc-Dokument aufgerufen." & CHR(10) _
& CHR(10) & "Erklärung:" _
& CHR(10) & "Dieses Makro setzt vordefinierte Farben in den benutzten" _
& CHR(10) & "Zellbereich des aktuellen Blatts oder in alle Blätter " _
& CHR(10) & "bei CALC-Dateien und funktioniert nur dort." _
& CHR(10) _
& CHR(10) & "Makro " & sModulSubName & " wird nun beendet." _
, 48 , sModulName & sModulVersion
Exit Sub
End If
' get selection
oSel = oDoc.getCurrentSelection
' selection of cells?
If Not oSel.supportsService(_
"com.sun.star.table.CellProperties" ) Then
MsgBox _
"Keine Auswahl getroffen." & CHR(10) _
& CHR(10) & "Erklärung:" _
& CHR(10) & "Dieses Makro setzt eine Zellhintergrundfarbe" _
& CHR(10) & "in ausgewählten Zellbereichen." _
& CHR(10) & "Die momentane Auswahl ist aber kein Zellbereich." _
& CHR(10) _
& CHR(10) & "Makro " & sModulSubName & " wird nun beendet." _
, 48 , sModulName & sModulVersion
Exit Sub
end if
' RGB: Red/Green/Blue portion of color
' values could range from 0 to 255
' see Tools > OpenOffice.org > Colors for values
' 0,0,0: Black
' 255,255,255: White
'
' verwendete Farbe
lEvenColor = RGB(148,188,88)
' one or more selected cell ranges?
If Not oSel.supportsService(_
"com.sun.star.table.CellRange" ) Then
' more than one range
' get addresses
vRanges = oSel.getRangeAddresses
' loop for all selections
for j = 0 to uBound(vRanges)
' range of looping selection
oCellRangeAdr = vRanges(j)
' address
PROC_prepareAdr
' do it
PROC_colorSelection
next j
else
' one selection
' range of one selection
oCellRangeAdr = oSel.getRangeAddress
' address
PROC_prepareAdr
' do it
PROC_colorSelection
end if
End Sub
' -------------------------------------------------------------------
Sub PROC_prepareAdr
' get sheet
actSheet = oDoc.Sheets.getByIndex(oCellRangeAdr.Sheet)
' set start / end
lStartCol = oCellRangeAdr.StartColumn
lStartRow = oCellRangeAdr.StartRow
lEndCol = oCellRangeAdr.EndColumn
lEndRow = oCellRangeAdr.EndRow
End Sub
' -------------------------------------------------------------------
Sub PROC_colorSelection
' step 1: apply even color to all cells of all selected regions
' this is for performance purposes
actRange = _
actSheet.getCellRangeByPosition(lStartCol,lStartRow,lEndCol,lEndRow)
actRange.setPropertyValue("CellBackColor", lEvenColor)
End Sub[/code]
Querverweise
http://www.ooowiki.de/MakrosInstallieren
http://www.ooowiki.de/MakrosMitEinemKlick
Viel Spass mit OOo!