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