Hallo,
ich habe heute ein Makro zur Erstellung von Werteversionen geschrieben. Es besteht aus folgenden Aktionen:
1. Blattschutz aufheben
2. Tabelle kopieren
3. ursprüngliche Tabelle wieder schützen
4. Kopierte Tabelle umbenennen
5. Kopierte Tabelle refreshen (es werden Daten aus einer Datenbank angezogen)
6. Werteversion der kopierten Tabelle erstellen
7. Diagramme, die sich auf dem kopierten Tabellenblatt befinden, aktualisieren (entsprechend den aus der Datenbank gezogen Daten)
Bislang funktioniert das bei mir nur, wenn ich das nicht in einem Makro schreibe, sondern 2 daraus mache. D.h. ich mache ein Makro für Nr. 1-5 und eins für Nr. 6-7. Das Problem, wenn ich alles in einem Makro mache , ist, dass Schritt 5 immer schief geht. D.h. das Makro kopiert alles einwandfrei, macht eine Werteversion daraus und aktualisiert auch die Diagramme. Aber es wird Schritt 5 nicht durchgeführt, so dass die Diagramme wertlos sind, weil keine Daten aus der Datenbank angezogen werden.
Vielleicht kann mir jemand weiterhelfen. Für Eure Hilfe wäre ich sehr dankbar. Anbei das gesamte Makro:
Private Sub CommandButton2_Click()
'Blattschutz aufheben
ActiveSheet.Unprotect
'Tabelle kopieren und hinter dem kopierten Blatt einfügen; für´s Ende anstatt 1 in Klammern (Sheets.Count)
ActiveSheet.Copy After:=Sheets(1)
'Blattschutz
Sheets("Report").Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
'Tabelle umbenennen
Sheets("Report (2)").Name = "Report HC"
'Befehl für´s Refreshen
CommandBars(1).Controls("Smart View").Controls(3).Controls(1).Execute
'Hardcopy
With Worksheets("Report HC").Range("B1:BD204")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Application.CutCopyMode = False
'Update Diagramme
If Range("AX4") = 1 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35"
End If
If Range("AX4") = 2 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C4"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C20"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C36"
End If
If Range("AX4") = 3 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C5"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C21"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C37"
End If
If Range("AX4") = 4 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C6"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C22"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C38"
End If
If Range("AX4") = 5 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C7"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C23"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C39"
End If
If Range("AX4") = 6 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C8"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C24"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C40"
End If
If Range("AX4") = 7 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C9"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C25"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C41"
End If
If Range("AX4") = 8 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C10"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C26"
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C35:R190C42"
End If
If Range("AX4") = 9 Then
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C3:R190C11"
ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.PlotArea.Select
ActiveChart.SeriesCollection(3).Values = "='Report HC'!R190C19:R190C27"
ActiveSheet.Char