Liniendiagramm Farben ändern

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

Moderator: Moderatoren

Pit66
Beiträge: 8
Registriert: Mi, 11.03.2020 15:28

Liniendiagramm Farben ändern

Beitrag von Pit66 »

Hallo!
Ich habe mal wieder eine Frage...
Ziel ist es, die Farben der Datenreihen in einem Liniendiagramm per Makro zu ändern.

Code: Alles auswählen

sub Diagramm
oDoc = ThisComponent
oView = oDoc.CurrentController
oSheet = oDoc.Sheets.getByName("Test")
Dim oCharts 'Charts in the sheet
oCharts = oSheet.Charts
msgbox (oCharts.count)  'Zeigt die korrekte Anzahl an Diagrammen an
Dim oChart
for i=0 to oCharts.count-1
   oChart = oCharts.getByIndex(i).EmbeddedObject
   oDiagram = oChart.getFirstDiagram()
next i
end sub
Hier hänge ich jetzt fest in der Struktur.
Wie kann man die einzelnen Datenreihen in Form einer Schleife durchlaufen
und dabei den Farbwert erst auslesen und dann ändern. Da ich nicht die gespeicherte Reihenfolge kenne.

Ich hoffe ihr könnt mir helfen.
Gruß Pit
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Liniendiagramm Farben ändern

Beitrag von F3K Total »

Pit66
Beiträge: 8
Registriert: Mi, 11.03.2020 15:28

Re: Liniendiagramm Farben ändern

Beitrag von Pit66 »

Vielen Dank!
Das trifft es genau auf den Punkt.
Pit66
Beiträge: 8
Registriert: Mi, 11.03.2020 15:28

Re: Liniendiagramm Farben ändern

Beitrag von Pit66 »

Hallo Rik,

so richtig funzt das bei mir noch nicht...
Es bleibt in der do loop Schleife hängen, weil .LineColor nicht überschrieben wird.

Halbe Stunde später...
Hab's jetzt selbst rausgefunden .FillColor kann man beschreiben und bekommt damit den gleichen Effekt.
LO Version: 6.2.8.2 (x64)

Code: Alles auswählen

sub test
oDoc = ThisComponent
oView = oDoc.CurrentController
oSheet = oDoc.Sheets.getByName("Tabelle1")
Dim oCharts
oCharts = oSheet.Charts
Dim oChart
for i=0 to oCharts.count-1
   oChart = oCharts.getByIndex(i).EmbeddedObject
   oChart.lockControllers
   oDiagram = oChart.Diagram
   oDataSequences = oChart.UsedData.DataSequences
   'msgbox (ubound (oDataSequences))
   if (ubound (oDataSequences)) = 2 then 'Anzahl der Datenreihen
	   for k = 0 to  ubound (oDataSequences)
	      	 do
		     oDataRowProperties = oDiagram.getDataRowProperties(k)
		     'oDataRowProperties.LineColor = RGB(0,255,0)
                     oDataRowProperties.FillColor = RGB(0,255,0)
   		 loop while oDataRowProperties.LineColor <> RGB(0,255,0)
	   next k
   end if
   oChart.unlockControllers
next i
end sub
Antworten