Zellinhalt in Abhängigkeit von Hintergrundfarbe löschen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Zellinhalt in Abhängigkeit von Hintergrundfarbe löschen

Beitrag von matlat »

Hallo
ich bin blutiger Anfänger in Sachen Makros und habe mir Code zusammengesucht, der das macht, was ich möchte:

Code: Alles auswählen

Sub hintergrundfarbe_entfernen
Dim oZellBereich as Object
Dim oZellbereichsAdresse as new com.sun.star.table.CellRangeAddress

' Zellberechsadresse konfigurieren
oZellbereichsAdresse.Sheet = 0
oZellbereichsAdresse.StartColumn = 1
oZellbereichsAdresse.StartRow = 1
oZellbereichsAdresse.EndColumn = 5
oZellbereichsAdresse.EndRow = 5

' Zellbereich holen und selektieren
oZellbereich = ThisComponent.Sheets( oZellbereichsAdresse.Sheet )._
getCellRangeByPosition( oZellbereichsAdresse.StartColumn, _
oZellbereichsAdresse.StartRow, _
oZellbereichsAdresse.EndColumn, _
oZellbereichsAdresse.EndRow )
ThisComponent.currentController.select( oZellbereich )

'hintergrundfarbe_entfernen
oZellbereich.CellBackColor = RGB(255,255,255)

End Sub
Ein Bereich wird markiert und die Hintergrundfarbe wird auf 'weiß' gesetzt.

Nun möchte ich vor dem Weißsetzen den Inhalt aller blauen Zellen im markierten Bereich löschen.

Sowas wie

Code: Alles auswählen

if oZellbereichsadresse.CellBackColor = RGB(0,0,255) then oZellbereichsadresse.string = ""
endif
muss eingefügt werden.

Für hilfreiche Antworten und Verbesserungen möchte ich mich jetzt schon bedanken.
Wolfgang
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Zellinhalt in Abhängigkeit von Hintergrundfarbe löschen

Beitrag von DPunch »

Aloha
matlat hat geschrieben:Ein Bereich wird markiert und die Hintergrundfarbe wird auf 'weiß' gesetzt.

Nun möchte ich vor dem Weißsetzen den Inhalt aller blauen Zellen im markierten Bereich löschen.
Versuch es mal hiermit (RGB(0,0,255) entspricht übrigens der Farbe "Hellblau" im entsprechenden UI):

Code: Alles auswählen

	oFormatRanges = oZellbereich.getCellFormatRanges
	For i = 0 To oFormatRanges.Count - 1
		If oFormatRanges(i).CellBackColor = RGB(0,0,255) Then
			oFormatRanges(i).clearContents(23)
		End if
	Next i
(Für Möglichkeiten zu ".clearContents" siehe API: CellFlags)
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Zellinhalt in Abhängigkeit von Hintergrundfarbe löschen

Beitrag von matlat »

Hallo DPunch
Deine Lösung habe ich eingebaut und sie funktioniert wie gewünscht.
vielen Dank dafür
Wolfgang
Antworten