Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
640to644
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
640to644
640to644
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Diagramm verschieben / positionieren

Diagramm verschieben / positionieren
21.07.2005 11:21:46
Heiko
Hallo,
mit der "Charts.Add" Anweisung habe ich per VBA ein Diagramm in eine tabelle eingefügt. Das Diagramm wird aber immer in der Seitenmitte positioniert und verdeckt alles. Wenn ich es nun mit
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm 1").IncrementLeft -50
ActiveSheet.Shapes("Diagramm 1").IncrementTop 160
verschieben möchte, kommt immer die Fehlermeldung, dass das Diagramm nicht gefunden wurde, obwohl ich es zuvor mit
ActiveChart.Name = "Diagramm1"
benannt habe. Ich habe den Code mit dem Makro-recorder aufgezeichnet und versucht, zusammenzubasteln. Wahrscheinlich der falsche Ansatz...
Woran kann das liegen bzw. wie mache ich es richtig?
Danke im voraus,
Heiko

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm verschieben / positionieren
21.07.2005 11:22:54
Dr.
Liegts vielleicht am Blank? ;-)
AW: Diagramm verschieben / positionieren
21.07.2005 11:32:54
Heiko
Ups, da habe ich mich leider vertippt...
Nee, am blank liegt´s nicht.
Der Code lautet bisher:
Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.Name = "Diagramm1"
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("A1:B" & anzahl & ""), _
PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm1").IncrementLeft -50
ActiveSheet.Shapes("Diagramm1").IncrementTop 160
Die Fehlermeldung lautet: Laufzeitfehler 5, ungültiger Prozeduraufruf oder ungültiges Argument.
Heiko
Anzeige
AW: Diagramm verschieben / positionieren
21.07.2005 11:41:17
Dr.
Schreib mal in den letzten beiden Zeilen statt "ActiveSheet" "Sheets("Tabelle1")"
klappt nicht
21.07.2005 12:34:49
Heiko
Hi, Dr.
klappt nicht mit Sheets.
Ich verstehe an dem Code nicht ganz, warum aus einem "chart" plötlich ein "ChartArea" und dann ein "shape" wird. Scheinbar kann man aber den increment oder einen offset keinem chart-Objekt zuweisen. Warum wird durch den Makro-recorder dem Chart nicht von Anfang an eine Größe und eine Position zugewiesen?
Hast Du noch eine Idee, wie das gehen könnte?
AW: klappt nicht
21.07.2005 12:35:59
Dr.
Lad das Teil doch kurz mal hoch, dann schau ich´s mir an.
AW: klappt nicht
21.07.2005 13:01:38
Heiko
hier ist die datei:
https://www.herber.de/bbs/user/24886.xls
dazu gehört allerdings noch eine Textdatei, aus der die Daten für das Diagramm geladen werden. Ich habe sie in "beispiel.xls" umbenannt. Du musst sie wieder in "beispiel.xrdml" umbenennen, damit das Makro funktioniert.

Die Datei https://www.herber.de/bbs/user/24887.xls wurde aus Datenschutzgründen gelöscht

Danke, heiko
Anzeige
AW: klappt nicht
21.07.2005 13:18:32
Dr.
Lass Dir mal in einer Messagebox den Namen des Diagramms anzeigen ;-)
Sprich es über ...Shapes(3) an, dann funzt es.
Jetzt geht´s, aber warum?
21.07.2005 13:42:56
Heiko
Aha!
Vielen Dank für die Hilfe.
Aber warum klappt´s jetzt und woher kommt der Name "3" für das Diagramm?
Name mit msgBox auslesen habe ich nicht hinbekommen... msgbox = "was"
Bis dann, Heiko
AW: Jetzt geht´s, aber warum?
21.07.2005 13:54:53
Dr.
Msgbox ActiveChart.Name
Dann siehst Du nämlich, dass Dein Chart den Namen "Tabelle1 Diagramm xy" hat. Und so wird es im weiteren Verlauf des Codes natürlich nicht gefunden. Shapes(3) bedeutet ganz einfach das dritte Shape auf dem Tabellenblatt. Shape 1 und 2 sind Button und Textfeld, Shape 3 dann das Chart.
Anzeige
AW: Diagramm verschieben / positionieren
21.07.2005 13:37:29
Ingo
Hallo Heiko,
villeicht hilft Dir das:
With ActiveSheet.ChartObjects(1)
.Height = 100
.Width = 200
.Left = Range("G2").Left
.Top = Range("G2").Top
End With
In diesem Beispiel wird die Höhe mit Height, die Breite mit Width und die Position linke obere Ecke in G2 festgelegt.
mfG
Ingo Christiansen
funzt auch- vielen Dank!
21.07.2005 13:50:48
Heiko
Hallo, Ingo,
vielen Dank für die Antwort. Damit klappt´s auch! Jetzt habe ich sogar 2 Lösungswege, wobei ich noch immer nicht ganz verstehe, warum im einen Fall "ChartObjects(1)" das Diagramm anspricht und im anderen Fall "ActiveSheet.Shapes(3)".
Langsam taste ich mich dran...
Danke nochmals,
Heiko
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige