Hallo Gerhard,

ein "modifyByName" ist mir auch noch nicht untergekommen. Ich hab' das nur so erwähnt um zu verdeutlichen, dass der Weg wohl löschen und neu anlegen ist. Mehr wollte ich damit in keiner Weise ausdrücken, zumal ja auch Bernd schrieb, dass er nur "add"-Beispiele gefunden hat und nicht wusste, wie er RANGE, SIZE etc eines bestehenden Diagramms ändern kann.

Sicherlich gibt es "viele Wege nach Rom" - ich empfinde den Weg "löschen" und "neu anlegen" am einfachsten, zumal Bernd ja das "Neu-Anlegen" eines Diagramms beherrscht. Da kann man neben dem RANGE auch noch alle anderen Sachen, die man möchte, modifizieren. Davon abgesehen, ich habe mich eben erst mit dieser Thematik beschäftigt, habe also keinerlei Erfahrungswerte und das ist das Erste, was mir als Möglichkeit eingefallen ist.

Deine Antwort von 18:22 hatte ich nicht mitbekommen, war zu beschäftigt mit LESEN und PROBIEREN ...

Viele Grüße
Hans-Werner :-))

------ Originalnachricht ------
Von: "Gerhard Weydt" <[email protected]>
An: [email protected]
Gesendet: 28.01.2021 20:15:55
Betreff: Re: [de-users] Diagramm Range per Makro ändern

Lieber Hans-Werner,

hast du meine Antwort mit dem gleichen Betreff von 18:22 nicht gesehen?  Es 
geht ja!

Und ein modifyByName ist mir noch nie untergekommen, und das braucht es auch 
nicht: man verwendet getByName, dann hat man das Objekt, dann kann man auf die 
Attribute zugreifen. Bei einem fiktiven modifyByName müsste man ja als 
Parameter die Eigenschaft und den Wert (der ja auch wieder ein Objekt sein 
kann) mitgeben. Das halte ich für komplizierter als das genannte Verfahren. Das 
wäre es insbesondere, wenn man geschachtelt über zwei, drei, ... Stufen erst 
eintauchen müsste, bis man das Objekt erreicht hat, das man eigentlich ändern 
will. Die geschachtelte Anweisung, die dann notwendig wäre, mag ich mir gar 
nicht vorstellen.

Herzliche Grüße
Gerhard

Am 28.01.2021 um 19:55 schrieb OoOHWHOoO:
Hallo Bernd,

ich hab' mich jetzt mal da mit bissel "rumlesen" und TryAndError "reingewuselt":

+ Einfach die CALC-Datei [5] anlegen und das Makro [4] starten.
+ Dann "rangeAddress(0).EndRow = 31 ' = 31.0.21" de-kommentieren.
+ Dann kannst Du mit den "EndRow"-Werten "spielen", das Diagramm wird immer 
angepasst.

Falls Probleme, kann ich Dir die CALC und das Makro auch zum Download bereit 
stellen.

Vielleicht hilft Dir das weiter,
viele Grüße
Hans-Werner :-))

[1] 
https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Charts_in_Spreadsheets

[2] 
https://api.libreoffice.org/docs/idl/ref/interfacecom_1_1sun_1_1star_1_1table_1_1XTablePivotCharts.html#a46c06f9f99599d4c32d7deef14948b52

Es gibt nur "addNewByName()" und "removeByName()", aber KEIN "modifyByName()".

Mit anderen Worten, man muss (wohl) erst das "alte" Diagramm löschen und legt dann das 
"neue" Diagramm an.

Blöd nur, mit "removeByName()" habe ich das Löschen nicht hinbekommen. Hab's dann mit 
"oShapes.remove(oShape)" gemacht. Erklären kann ich's nicht, vielleicht hat jemand im 
Forum eine passende Erklärung - oder ich hab' einfach nur was falsch gemacht ...

[3] https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=91518

[4] Makro

Sub ChartModify

Dim oDoc As Object
Dim oChart As Object
Dim oCharts As Object
Dim oSheet As Object
Dim oShape As Object
Dim oShapes As Object

Dim rangeAddress(0) As new com.sun.star.table.CellRangeAddress
Dim Rect As New com.sun.star.awt.Rectangle

oDoc = ThisComponent
oSheet = oDoc.Sheets(0)
oShapes = oSheet.DrawPage

If (oShapes.getCount() > 0 ) Then ' falls noch kein Diagramm existiert
oShape = oShapes(0)
oShapes.remove(oShape)
EndIf

Rect.X = 6000
Rect.Y = 1500
Rect.Width = 20000
Rect.Height = 10000

rangeAddress(0).StartColumn = 0 ' Spalten-Index beginnt bei 0
rangeAddress(0).StartRow = 0 ' Zeilen-Index beginnt bei 0
rangeAddress(0).EndColumn = 1 ' = Spalte B
'rangeAddress(0).EndRow = 15 ' = 15.0.21
rangeAddress(0).EndRow = 31 ' = 31.0.21

oCharts = oSheet.Charts
oCharts.addNewByName("Chart1",Rect,RangeAddress(),True,True)

End Sub

[5] CALC-Datei

Datum | Wert
01.01.21 | 10
02.01.21 | 20
03.01.21 | 30
04.01.21 | 40
05.01.21 | 50
06.01.21 | 60
07.01.21 | 70
08.01.21 | 80
09.01.21 | 90
10.01.21 | 100
11.01.21 | 110
12.01.21 | 120
13.01.21 | 130
14.01.21 | 140
15.01.21 | 150
16.01.21 | 160
17.01.21 | 170
18.01.21 | 180
19.01.21 | 190
20.01.21 | 200
21.01.21 | 210
22.01.21 | 220
23.01.21 | 230
24.01.21 | 240
25.01.21 | 250
26.01.21 | 260
27.01.21 | 270
28.01.21 | 280
29.01.21 | 290
30.01.21 | 300
31.01.21 | 310



-- Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
--
Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an