Seite 1 von 1

[gelöst] bereiche in calc

Verfasst: So, 25.11.2018 15:28
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?

Re: bereiche in calc

Verfasst: So, 25.11.2018 17:14
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

Re: bereiche in calc

Verfasst: So, 25.11.2018 17:22
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

Re: bereiche in calc

Verfasst: Mo, 03.12.2018 18:36
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.

Re: bereiche in calc

Verfasst: Di, 04.12.2018 12:39
von jef0815
Vielen Dank, das ist genau was ich wollte. Spitze!!!
Gruß Jürgen