[gelöst] bereiche in calc

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

Moderator: Moderatoren

jef0815
**
Beiträge: 35
Registriert: Fr, 01.04.2016 11:48

[gelöst] bereiche in calc

Beitrag von jef0815 »

Hallo Gemeinde,
ich habe einen Bereich von Zelle A1:C3, also neun Zellen. Jetzt wähle ich mit einer Checkbox eine Farbe aus und erhalte nach einem Mausklick die ausgewählte Zelle mit farbigem Hintergrund. Den gesamten Bereich habe ich "Box1" genannt. Mit einer zweiten Checkbox wähle ich entweder die Zelle oder die Box. Ist es möglich, dass Calc erkennt: diese Zelle liegt in einem Bereich und zwar mit Namen "Box1" und mir so den gesamten Bereich farbig hinterlegt? Egal welche Zelle zwischen A1 und C3 ich anklicke?
Zuletzt geändert von jef0815 am Di, 04.12.2018 12:48, insgesamt 1-mal geändert.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: bereiche in calc

Beitrag von mikeleb »

Hallo,
das folgende Code-Schnipsel könnte dir weiterhelfen:

Code: Alles auswählen

Sub Main
	oBereich=ThisComponent.NamedRanges.getByName("Box1").getReferredCells
	oCell=Thiscomponent.currentselection
	if oBereich.queryintersection(oCell.rangeaddress).count>0 then
		msgbox "im Bereich"
	else
		msgbox "nicht im Bereich"
	end if
End Sub
Gruß,
mikeleb
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: bereiche in calc

Beitrag von F3K Total »

Moin,
deine Beschreibung ist etwas zu dürftig, was genau möchtest du erreichen?
Ich meine, neun Zellen einmal zu markieren und dann farbig zu hinterlegen ist schonmal kein Hexenwerk.
Wenn du die Farbe z.B. mit Optionsfeldern auswählen möchtest, brauchst du dafür auch kein Makro, geht mit der "bedingten Formatierung" bis zu drei Farben ohne Probleme, siehe Beispiel anbei.
Gruß R
Dateianhänge
Optionsfeld_Hintergrundfarbe.ods
(8.74 KiB) 100-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: bereiche in calc

Beitrag von F3K Total »

Aha,
nun, ich wollte es wissen, mit diesem Makro geht es dann, wenn du die 9 Bereiche festlegst:

Code: Alles auswählen

global oLastCell as object
global bStart as boolean

Sub set_backgroundcolor(event)
    dim nStatus as integer
    oSheet = ThisComponent.Sheets.getbyname("Tabelle1")
    oStatusCell = oSheet.getCellbyposition(9,0)'J1
    oColorCell = oSheet.getCellbyposition(10,0)'K1
    nColor = oColorCell.CellBackcolor
    nStatus = oStatusCell.string
    oRange = oSheet.getcellRangebyposition(0,0,8,8)'der gesamte Bereich
    if bStart Then oLastCell.CellBackcolor = - 1
    if oRange.queryIntersection(event.Rangeaddress).count > 0 then
    oLastCell = event
    bStart = 1
        if nStatus = 0 then
             event.CellBackcolor = nColor
             oLastCell = event
        else
            oNamedRanges = thisComponent.NamedRanges
            for i = 0 to oNamedRanges.count - 1
                oNamedRangeCells = oNamedRanges(i).referredCells
                    if oNamedRangeCells.queryIntersection(event.Rangeaddress).count > 0 then
                        oNamedRangeCells.CellBackcolor = nColor
                        oLastCell = oNamedRangeCells
                    endif
            next i
        endif
    endif
End Sub
Beispiel anbei, Makros müssen natürlich erlaubt werden.
Dateianhänge
Bereiche_einfaerben.ods
(10.76 KiB) 100-mal heruntergeladen
jef0815
**
Beiträge: 35
Registriert: Fr, 01.04.2016 11:48

Re: bereiche in calc

Beitrag von jef0815 »

Vielen Dank, das ist genau was ich wollte. Spitze!!!
Gruß Jürgen
Antworten