[gelöst] bereiche in calc

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

Moderator: Moderatoren

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

[gelöst] bereiche in calc

Beitrag von jef0815 » So, 25.11.2018 15:28

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: 742
Registriert: Fr, 09.12.2011 16:50

Re: bereiche in calc

Beitrag von mikeleb » So, 25.11.2018 17:14

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: 3269
Registriert: Mo, 28.02.2011 17:49

Re: bereiche in calc

Beitrag von F3K Total » So, 25.11.2018 17:22

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) 6-mal heruntergeladen

Gast

Re: bereiche in calc

Beitrag von Gast » So, 02.12.2018 21:06

Hallo,
Danke für eure Antworten. Vielleicht habe ich mich unklar ausgedrückt. Konkret ein Beispiel: Ein Sudoku-Rätsel hat 81 Felder (Bereiche), die noch einmal in je 9 Felder unterteilt sind. Jetzt gibt es 2 Möglichkeiten - entweder ich möchte eins der 9 Felder in einem Bereich farbig unterlegen oder einen kompletten Bereich. Der Auslöser ist ein Mausklick auf das Feld, abhängig von der Vorgabe des Optionsfeldes (einzelne Zahl oder zugehöriger Bereich).
Gruß Jürgen

F3K Total
********
Beiträge: 3269
Registriert: Mo, 28.02.2011 17:49

Re: bereiche in calc

Beitrag von F3K Total » Mo, 03.12.2018 18:36

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) 5-mal heruntergeladen

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

Re: bereiche in calc

Beitrag von jef0815 » Di, 04.12.2018 12:39

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

Antworten