VBA: Kopieren eines Diagrammarbeitsblatts aus einer Vorlage

VBA: Kopieren eines Diagrammarbeitsblatts aus einer Vorlage

Ich habe ein Arbeitsblattdiagramm, das ich als Vorlage in einem Makro verwenden möchte. Ich versuche, das Blatt zu kopieren und es einem Objekt vom Typ „Diagramm“ zuzuweisen, aber es funktioniert nicht.

Unten im Code befinden sich zwei Zeilen funktionierenden Codes zum Erstellen oder Kopieren eines Diagrammblatts.

Das Problem liegt in der letzten Codezeile. Sie kopiert das Blatt, gibt dann aber einen Fehler aus, bevor sie zur nächsten Zeile übergeht (Fehler 424: Objekt erforderlich).

Kann mir jemand erklären, warum das passiert, und eine Lösung vorschlagen, um das Blatt einer Zeile zuzuordnen?

Momentan besteht meine Lösung darin, die Vorlage zu kopieren und dann WS_chart3 auf das aktive Blatt zu setzen. Ich mag einfach keine Verweise auf das aktive Blatt, wenn ich sie vermeiden kann.

Sub test()

Dim WS_chart2 As Chart
Dim WS_chart3 As Chart

    'adds chart sheet but doesn't use a template
    Set WS_chart2 = Charts.Add(After:=Sheets(Sheets.Count))

    'adds sheet but doesn't asign in to variable WS_chart2
    Sheets("template").Copy After:=Sheets(Sheets.Count)

    'adds chart sheet but then errors out
    Set WS_chart3 = Sheets("template").Copy(After:=Sheets(Sheets.Count))

End Sub

Antwort1

Ein Problem besteht mit Sicherheit darin, dass die Kopiermethode kein Objekt zurückgibt (sie gibt nichts zurück), sodass Sie zuerst die Kopie erstellen und dann das neue Blatt abrufen und es der Variablen zuweisen müssen.

Ich denke, du kannst einfach

Dim SheetBeforeChart3 As Long

SheetBeforeChart3 = Sheets.Count
Sheets("template").Copy After:=Sheets(SheetBeforeChart3)

Set WS_chart3 = Sheets(SheetBeforeChart3 + 1)

Ich kenne mich allerdings mit Excel VBA nicht so gut aus, es könnte noch andere Probleme geben, ich hoffe, dass dir das trotzdem ein wenig hilft.

verwandte Informationen