Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Diagramm kopieren und dann benennen

VBA: Diagramm kopieren und dann benennen
08.04.2005 11:48:13
Doro
Hallo Zusammen,
habe folgendes Problem. Ich lasse via Makro insgesamt viermal ein Diagramm erzeugen, und als Chart angelegen (in Extra-Tabellenblättern). Dabei kann ich auch einen Namen vergeben. Am Ende des Makros möchte ich diese Charts nochmal kopieren, und auf einem Übersichtsblatt darstellen, also als eingebettete Diagramme. Habe weder rausgefunden, wie ich ihnen dann einen Namen geben kann, um sie bei update der Daten zu löschen (ActiveChart.Name = "name" funktioniert nicht), noch wie man einigermaßen komfortabel ne Größe angeben kann.
Hoffe, dass mir jemand helfen kann!
Grüße von Doro
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Diagramm kopieren und dann benennen
08.04.2005 12:30:37
K.Rola
Hallo,
lad mal ein aufs Nötigste abgespecktes Beispiel hoch.
Gruß K.Rola
AW: VBA: Diagramm kopieren und dann benennen
08.04.2005 12:48:37
Doro
Das ist extrem schwierig, das abzuspecken, weil da superviele Verknüpfungen drin sind. Soll ich nen Teil vom VBA Code kopieren?
AW: VBA: Diagramm kopieren und dann benennen
08.04.2005 13:00:55
K.Rola
Hallo,
besser wär schon eine Mappe, dann könnte ich den Code dort einbauen.
Gruß K.Rola
Anzeige
AW: VBA: Diagramm kopieren und dann benennen
08.04.2005 13:34:43
Doro
Sorry, ich darf die Daten nicht rausschicken. hab einen Teil vom Code kopiert:
Sheets("Original Diagram").Select
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy

Sheets("Overview").Select
Range("H1").Select
ActiveSheet.Paste

ActiveChart.Name = "New Diagram"
Soweit klappt das alles. Nur dass er dem neuen Diagramm keinen Namen zuordnet, und ich nicht weiß, wie ich die Größe ändern soll. Wobei VBA schon das eingefügte Diagramm als ActiveChart erkennt, ich ändere nämlich noch diverse andere Dinge. Hast Du ne Idee?
Anzeige
AW: VBA: Diagramm kopieren und dann benennen
08.04.2005 14:48:28
K.Rola
Hallo,
eine Möglichkeit:
Option Explicit
Sub Chart_copy()
Dim i As Integer
Sheets("Original Diagram").ChartObjects(1).Chart.ChartArea.Copy
With Sheets("Overview")
.Paste
For i = 1 To .ChartObjects.Count
.ChartObjects(i).Name = "DeinChart" & i
Next
End With
With Sheets("Overview").ChartObjects("DeinChart1")
.Height = 120
.Width = 200
.Top = 50
.Left = 50
End With
End Sub

Gruß K.Rola
Anzeige
AW: VBA: Diagramm kopieren und dann benennen
13.04.2005 15:21:47
Doro
Hallo,
hat so nicht ganz geklappt, da ich das Makro mehrfach laufen lassen möchte. Dann sollen die Diagramme gelöscht werden und neue eingefügt werden. Daher klappt die For-Schleife nicht. Hab es aber anders gelöst, indem ich das Diagramm direkt nach dem Kopieren mit ChartObjects(.ActiveChart.ChartObjectsCount) "angesprochen" und umbenannt habe.
Trotzdem vielen Dank nochmal!
Doro
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Diagramme in Excel mit VBA kopieren und benennen


Schritt-für-Schritt-Anleitung

Um ein Diagramm in Excel per VBA zu kopieren und ihm einen Namen zu geben, kannst du folgenden Code verwenden. Dieser basiert auf dem Thread im Excel-Forum:

Option Explicit
Sub Chart_copy()
    Dim i As Integer
    Sheets("Original Diagram").ChartObjects(1).Chart.ChartArea.Copy
    With Sheets("Overview")
        .Paste
        For i = 1 To .ChartObjects.Count
            .ChartObjects(i).Name = "DeinChart" & i
        Next
    End With
    With Sheets("Overview").ChartObjects("DeinChart1")
        .Height = 120
        .Width = 200
        .Top = 50
        .Left = 50
    End With
End Sub
  1. Diagramm kopieren: Der Befehl Chart.ChartArea.Copy kopiert das gewünschte Diagramm.
  2. Einfügen in das Ziel-Tabellenblatt: Mit .Paste wird das Diagramm in das Zielblatt eingefügt.
  3. Benennen des Diagramms: In der Schleife wird jedem Diagramm ein Name zugewiesen.
  4. Größe und Position anpassen: Mit .Height, .Width, .Top und .Left kannst du die Größe und Position des Diagramms festlegen.

Häufige Fehler und Lösungen

  • Diagramm wird nicht benannt: Stelle sicher, dass das Diagramm nach dem Einfügen aktiv ist. Verwende ActiveChart oder benenne das Diagramm direkt nach dem Einfügen.

  • Fehler bei der For-Schleife: Wenn du das Makro mehrfach laufen lassen möchtest, kann es zu Problemen kommen, wenn die Diagramme nicht gelöscht werden. Achte darauf, die Diagramme vor dem Einfügen neuer zu löschen.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, Diagramme in Excel zu kopieren und zu benennen. Eine Alternative ist, die Diagramme direkt im Zielblatt zu erstellen, anstatt sie von einem anderen Blatt zu kopieren:

Sub CreateChart()
    Dim chartObj As ChartObject
    Set chartObj = Sheets("Overview").ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
    chartObj.Chart.SetSourceData Source:=Sheets("Original Diagram").Range("A1:B10")
    chartObj.Name = "NeuesDiagramm"
End Sub

Hier wird ein neues Diagramm direkt auf dem "Overview"-Tabellenblatt erstellt, und du kannst die Datenquelle sowie den Namen sofort festlegen.


Praktische Beispiele

Ein Beispiel für das Kopieren eines Diagramms und das Zuweisen eines neuen Namens könnte so aussehen:

Sub CopyAndRenameChart()
    Sheets("Original Diagram").ChartObjects(1).Chart.ChartArea.Copy
    Sheets("Overview").Paste
    ActiveChart.Name = "KopiertesDiagramm"
End Sub

In diesem Beispiel wird das erste Diagramm vom "Original Diagram"-Blatt kopiert und als "KopiertesDiagramm" benannt.


Tipps für Profis

  • Verwende With...End With: Dies verbessert die Lesbarkeit und Performance deines Codes, wenn du mehrere Eigenschaften eines Objekts anpassen möchtest.
  • Fehlerbehandlung einfügen: Nutze On Error Resume Next, um Fehler abzufangen und die Ausführung des Codes nicht zu unterbrechen.
  • Benennungskonvention: Halte dich an eine klare Benennungskonvention, um die Wartung deines Codes zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Diagramm beim Einfügen aktiv ist? Um sicherzustellen, dass das Diagramm aktiv ist, kannst du ActiveChart verwenden oder das Diagramm direkt nach dem Einfügen ansprechen.

2. Was mache ich, wenn ich die Größe des Diagramms nicht ändern kann? Stelle sicher, dass du nach dem Einfügen des Diagramms die Eigenschaften wie .Height und .Width korrekt anwendest. Manchmal kann es hilfreich sein, eine Pause (DoEvents) einzufügen, um sicherzustellen, dass das Diagramm richtig geladen ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige