Hallo,
ich versuche per makro die Grösse von Diagrammen (Charts) zu verändern.
Das gelingt nur teilweise.
Der Code funktioniert nicht:
Der Versuch die Grösse der Diagramme zu ändern
size=ChartDoc.Drawpage.getByIndex(0).getSize()
msgbox size.width 'ist immer 31286
size.Width=40000 'Damit eine Veränderung sichtbar würde
ChartDoc.Drawpage.getByIndex(0).Size=size
size=ChartDoc.Drawpage.getByIndex(0).getSize()
msgbox size.width 'Zeigt die Änderung an.
'Aber es wird
nicht wirklich geändert
Greife ich evtl. auf das falsche Object zu? Ich verstehs nicht
Was funktioniertist dieser Code:
ChartDoc.Diagram.XAxis.Min=DateValue(DateStr) '09.11.2020
ChartDoc.Diagram.XAxis.NumberFormat=131 'TT.MM
Die komplette Routine:
----8<-----
public Sub SetChartXAxisMinDate()
'** Das Startdatum der Skala setzen
'** Wird von den Ereignissen "Text geändert" und "Nach Aktualisierung" des
'** Controls "ChartXAxisMinDate" (Tab Diagramme, Datumsfeld rechts Oben)
getriggert
dim ChartDoc
Dim Charts As Object
Dim Chart as Object
Dim oSheet
Dim oForm
Dim i%
Dim aDate
Dim DateStr$
Dim size
Dim Cell
Dim debug$
Dim cRg
Dim j%
cRg=createUnoStruct("com.sun.star.table.CellRangeAddress")
size=createUnoStruct("com.sun.star.awt.Size")
oSheet=Thiscomponent.sheets.getByName("Diagramme")
oForm=oSheet.Drawpage.Forms.getByName("Formular")
Cell=oSheet.getCellRangeByName("N7")
aDate = createUnoStruct("com.sun.star.util.Date") 'Holen des Datums
geht nur mit der struct
aDate=oForm.getByName("ChartXAxisMinDate").Date ' .Text ist nicht
immer aktuell??
'DateStr=aDate.Day & "." & aDate.Month & "." & aDate.Year
DateStr = ConvertDateTime(aDate, "STRING") '''' --> mytools.modDate
Cell.String=Datestr
'Mri oSheet.Charts.getByIndex(0)
For i=0 To oSheet.Charts.count-1
Chart = oSheet.Charts.getByIndex(i)
ChartDoc = Chart.getEmbeddedObject()
if i=0 then 'Für den Test. Nur das 1. Diagramm
'''' Geht nicht. Zerstört das Diagramm!
'' Der Versuch die Ranges der Diagramme zu verändern
' cRg=Chart.getRanges()
' For j=1 To ubound(cRg)
'
' If cRg(j).EndRow <> 550 then
' cRg(j).EndRow=550
' debug=debug & "Cart(" & i & ") Range(" & j & ")" & chr(10)
' End if
' Next j
' Chart.setRanges(cRg)
'msgbox ChartDoc.Diagram.XAxis.NumberFormat
'''' Geht nicht
'' Der Versuch die Grösse der Diagramme zu ändern
size=ChartDoc.Drawpage.getByIndex(0).getSize()
msgbox size.width 'ist immer 31286
size.Width=40000 'Damit eine Veränderung sichtbar würde
ChartDoc.Drawpage.getByIndex(0).Size=size
size=ChartDoc.Drawpage.getByIndex(0).getSize()
msgbox size.width 'Zeigt die Änderung an. Aber es wird nicht wirklich
geändert
End If
ChartDoc.Diagram.XAxis.Min=DateValue(DateStr) '09.11.2020
'ChartDoc.Diagram.XAxis.NumberFormat=141 'NN TT.MM
ChartDoc.Diagram.XAxis.NumberFormat=131 'TT.MM
Next i
'mri Chart
End Sub