Supportnet / Forum / Tabellenkalkulation
Diagramm über Makro vergrößern und verschieben - wie geht das ?
Frage
Guten Morgen !
Ich habe folgendes Problem:
Ich würde mit einem Makro gerne ein Diagramm an eine bestimme Position schieben und vergrößern. Aber das klappt nicht, weil die Bezeichnung des Diagramms bei jedem Mal, wo ich das Makro ausführe, erhöht wird. Somit funktioniert das Makro beim nächsten Mal nicht mehr und ich bekomme eine Fehlermeldung. Was kann ich machen, um das Diagramm trotzdem übers Makro zu verändern ? Kann ich diese fortlaufende Bezeichnung des Diagramms irgendwie unterbinden ?
Antwort 1 von RealHansi
Hat jemand eine Idee ?
Antwort 2 von powder
HAllo Hansi,
schreib doch mal bitte den code den du bisher, wahrscheinlich Aufgezichnet, hast.
grüße
Tino
schreib doch mal bitte den code den du bisher, wahrscheinlich Aufgezichnet, hast.
grüße
Tino
Antwort 3 von RealHansi
Okay, es ist eigentlich nur ein kurzes Makro:
ActiveSheet.Shapes("Diagramm 70").IncrementLeft -172.5
ActiveSheet.Shapes("Diagramm 70").IncrementTop -130.5
ActiveSheet.Shapes("Diagramm 70").ScaleWidth 1.17, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Diagramm 70").ScaleHeight 1.27, msoFalse, _
msoScaleFromTopLeft
ActiveWindow.Visible = False
Windows("Diagramm1.xls").Activate
Das Problem bei der Sache - wie Du siehst, wird das Diagramm mit "Diagramm 70" bezeichnet. Jedes Mal, wo ich das Makro ausführen will, wird der Wert in der Bezeichnung erhöht -> also "Diagramm 71". Damit funktioniert das Makro aber nicht mehr und ich bekomm eine Fehlermeldung :-(
Ich finde aber keine Möglichkeit, wie ich das ganze statisch machen kann, sodass die Diagramm-Bezeichnung nicht erhöht wird. Gibts da eine Möglichkeit ? Wie müsste das Skript richtigerweise aussehen, damit das funktioniert ?
Achja, das Diagramm selbst wird über folgendes Makro erzeugt:
...
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("G23:G34"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).XValues = "=Tabelle1!R23C2:R34C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle3"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = MyName & ", LASL: " & MyNum
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Menge"
End With
ActiveChart.HasLegend = False
ActiveChart.HasDataTable = False
ActiveWindow.Visible = False
...
Mein Ziel ist es eben, das Diagramm zu generieren und gleich entsprechend zu positionieren und zu vergrößern, um es in einem weiteren Schritt als PDF auszugeben (das klappt allerdings schon).
ActiveSheet.Shapes("Diagramm 70").IncrementLeft -172.5
ActiveSheet.Shapes("Diagramm 70").IncrementTop -130.5
ActiveSheet.Shapes("Diagramm 70").ScaleWidth 1.17, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Diagramm 70").ScaleHeight 1.27, msoFalse, _
msoScaleFromTopLeft
ActiveWindow.Visible = False
Windows("Diagramm1.xls").Activate
Das Problem bei der Sache - wie Du siehst, wird das Diagramm mit "Diagramm 70" bezeichnet. Jedes Mal, wo ich das Makro ausführen will, wird der Wert in der Bezeichnung erhöht -> also "Diagramm 71". Damit funktioniert das Makro aber nicht mehr und ich bekomm eine Fehlermeldung :-(
Ich finde aber keine Möglichkeit, wie ich das ganze statisch machen kann, sodass die Diagramm-Bezeichnung nicht erhöht wird. Gibts da eine Möglichkeit ? Wie müsste das Skript richtigerweise aussehen, damit das funktioniert ?
Achja, das Diagramm selbst wird über folgendes Makro erzeugt:
...
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("G23:G34"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).XValues = "=Tabelle1!R23C2:R34C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle3"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = MyName & ", LASL: " & MyNum
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Menge"
End With
ActiveChart.HasLegend = False
ActiveChart.HasDataTable = False
ActiveWindow.Visible = False
...
Mein Ziel ist es eben, das Diagramm zu generieren und gleich entsprechend zu positionieren und zu vergrößern, um es in einem weiteren Schritt als PDF auszugeben (das klappt allerdings schon).
Antwort 4 von RealHansi
Problemlösung erwünscht :-)
Antwort 5 von powder
Hi,
sorry manchmal braucht man etwas geduld, ich schau halt auch nicht immer und kann gerade auch nicht testen. Aber rein vom Aufbau sollte folgendes helfen.
Zumindest wenn es das einzige Diagramm ist.
ersetze einfach deinen diagramm Namen also "Diagramm70" durch eine 1 (wichtig ohne Anführungszeichen) damit wird nicht ein bestimmtes sondern einfach das erste Diagramm aufgerufen.
Falls du mehrere Diagramme in einer Tabelle hast dann eben die entsprechende Zahl.
Oder versuche direkt beim Diagramm erstellen einen Namen zu vergeben. Mal in der Hilfe schauen :) ich kann leider gerade nicht.
Aber vielleicht hilft das ja schon.
Melde dich einfach nochmal.
Grüße
Tino
sorry manchmal braucht man etwas geduld, ich schau halt auch nicht immer und kann gerade auch nicht testen. Aber rein vom Aufbau sollte folgendes helfen.
Zumindest wenn es das einzige Diagramm ist.
ersetze einfach deinen diagramm Namen also "Diagramm70" durch eine 1 (wichtig ohne Anführungszeichen) damit wird nicht ein bestimmtes sondern einfach das erste Diagramm aufgerufen.
Falls du mehrere Diagramme in einer Tabelle hast dann eben die entsprechende Zahl.
Oder versuche direkt beim Diagramm erstellen einen Namen zu vergeben. Mal in der Hilfe schauen :) ich kann leider gerade nicht.
Aber vielleicht hilft das ja schon.
Melde dich einfach nochmal.
Grüße
Tino

