ich habe mit dem makrorekorder ein Diagramm erzeugt. Leider wird dieses Diagramm an einer ungünstigen Stelle erzeugt.
Ich würde gern dieses Diagramm verschieben können.
Mein Code:
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(„D15:E“ & i)
ActiveChart.ChartType = xlLine
ActiveChart.ChartArea.Width = 660
ActiveChart.ChartArea.Height = 500
Vielleicht kann mir jemand helfen
Versuch es mal damit:
ActiveSheet.Shapes("Diagramm 1").IncrementLeft 123.45
ActiveSheet.Shapes("Diagramm 1").IncrementTop -87
den Namen des Diagramms und die Zahlen musst du natürlich anpassen
Aber mein Diagramm hat aber keinen Namen
Hallo eugen1234,
da kann ich leider nicht helfen. Mit Diagrammen habe ich nicht viel Erfahrung
Gruß Hugo
Einfach mit der Maus an den Rand fahren bis Maus zum Kreuz wird.
Die Linken Maustaste Halten, und ziehen.
Hallo,
mein pragmatischer und ungetesteter Vorschlag wäre: Die Eigenschaften Top und Left des Charts zu setzen. Da Top und Left aber keine typischen Excel-Koordinaten annehmen, wäre das eher so etwas wie:
ActiveChart.Top = range(„A1:B2“).Height
ActiveChart.Left = range(„A1:B2“).Width
wenn die linke obere Ecke A1:B2 darstellen soll.
Da ich hier kein Excel zur Verfügung habe, kann ich das aber leider nicht verifizieren.
gegrüsst!
gegrüsst!
Natürlich hat es einen internen Namen.
Versuch mal folgendes:
Starte den Makrorekorder und verschiebe das Diagramm per Hand. Stoppe den Makrorekorder und sieh dir den Code mal an.
Ich habe mal ein Diagramm mit dem folgenden Code oben links ausgerichtet und auf die gesamte Seite angepasst.
Mein Diagramm wird immer ab Zeile 3 und Spalte 1 angezeigt.
Mit den letzten beiden Befehlen bestimme ich dann die Fensterbreite als Diagrammbreite.
Activesheet.PageSetup.Zoom = 100
Set rng = Windows(ActiveWorkbook.Name).VisibleRange
Set rng = rng.Resize(rng.Rows.Count - 1, rng.Columns.Count - 1)
With Activesheet
.ChartObjects(„Diagramm 1“).Top = .Rows(3).Top
.ChartObjects(„Diagramm 1“).Left = .Columns(1).Left
vDiff = .Columns(1).RowHeight
End With
With ActiveSheet.Shapes(„Diagramm 1“)
.Width = rng.Width
.Height = rng.Height - vDiff
End With
du hast recht.
das problem ist, dass sich der Name des Diagramms bei jeder Ausführung des makros ändert.
weißt du, wie ich den namen in meinem fall fest setzen kann?
Da bin ich leider überfragt.
Aber hast Du den mehrere Diagramme pro Mappe/Sheet?
Sonst eben eine Abfrage a la
For each MyShape in Shapes
If MyShape.Name \> "" Then
'Deine Aktion
end if
Next
Versuch dich mal. Bin z.Z. stark eingespannt und kann daher keinen lauffähigen Code liefern, nur Tipps.
Hallo Eugen,
mit folgenden Ergänzungen kannst du das Diagramm an deine Wunschposition verschieben
Gruß
Franz
Sub AaTest()
Dim rngZelle As Range, objShape As Shape
With ActiveSheet
'in dieser Zelle soll die linke obere Ecke des Diagramms plaziert werden
'fest vorgegeben
Set rngZelle = ActiveSheet.Range("F15")
'oder variabel in Zelle die vor Start des Makros selektiert wird
Set rngZelle = ActiveCell
i = .Cells(.Rows.Count, 4).End(xlUp).Row 'Zeile zum Testen von mir eingebaut
End With
ActiveSheet.Shapes.AddChart.Select
Set objShape = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
ActiveChart.SetSourceData Source:=Range("D15:E" & i)
ActiveChart.ChartType = xlLine
ActiveChart.ChartArea.Width = 660
ActiveChart.ChartArea.Height = 500
With objShape
'mit den Werten nach Top und Left kann man die Positon noch etwas feinjustieren
.Top = rngZelle.Top + 0
.Left = rngZelle.Left + 0
End With
Set rngZelle = Nothing: Set objShape = Nothing
End Sub
Sorry,
da kann ich leider nicht helfen.
Gruß,
Ptonka