VBA: Diagramm-Datenbereich Bug?
06.02.2021 15:25:05
Max
normalerweise stelle ich keine Fragen auf Foren und versuchte es bisher so lange selber, bis es klappte. Nun bin ich an einem Punkt, wo ich wirklich nicht weiter weiß.
Der Link zur Tabelle:
https://www.herber.de/bbs/user/143673.xlsm
Bitte ändert im Macro das Workbook von "DiagrammbereichErweitern.xlsm" zu "143673.xlsm"
Ich möchte den Datenbereich eines Diagramms mit VBA abhängig von der Anzahl der Daten (hier vereinfacht: Daten in Spalte B) erweitern. In der Beispieltabelle im Blatt Tabelle1 funktioniert das Makro KurvenZeichnen super. Wenn ich allerdings den gleichen Code angepasst auf Tabelle im Blatt Tabelle2 mit dem Makro KurvenZeichnen1 anwenden will, zerschießt es mir die Tabelle, sobald ich Daten ab Zeile 17 eintrage:
x-Werte in Zeile 4 werden zu Datennamen und Namen in Spalte B werden zu x-Werten der Tabelle.
Der Datenbereich im Macro KurvenZeichnen1 geht von Spalte L bis V.
Im Macro KurvenZeichnen2 habe in 2 Spalten zum Datenbereich hinzugefügt (Datenbereich K bis W), was dazu führt, dass ich 2 weitere Datenreihen in der Source-Range hinzufügen kann, ohne dass es die Tabelle zerschießt.
Das Macro KurvenZeichnen im Blatt Tabelle1 bezieht sich auch auf den Bereich von Spalte K bis W, aber dort kann ich noch viel mehr Werte hinzufügen, ohne dass es die Tabelle zerschießt.
Woher kommt das und wie kann ich das beheben?
Ich bin sehr dankbar über alle Antworten, da ich hier ratlos bin und die Funktion benötige.
Viele Grüße
Max
________________________________________________________________________________________________
________________________________________________________________________________________________
Code für alle, die nicht in die Datei schauen
Sub KurvenZeichnen()
q = Workbooks("DiagrammbereichErweitern.xlsm").Worksheets("Tabelle1").Cells(2, 2).Value
Sheets("Tabelle1").Select
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SetSourceData Source:=Range( _
"Tabelle1!$B$4,Tabelle1!$K$4:$W$4,Tabelle1!$B$6:$B$" & 7 + q & ",Tabelle1!$K$6:$W$" & 7 _
+ q)
ActiveSheet.ChartObjects("Diagramm 1").Top = Range("B" & 8 + q).Top
ActiveSheet.ChartObjects("Diagramm 1").Left = Range("B" & 8 + q).Left
End Sub
Sub KurvenZeichnen1()
q = Workbooks("DiagrammbereichErweitern.xlsm").Worksheets("Tabelle2").Cells(2, 2).Value
Sheets("Tabelle2").Select
ActiveSheet.ChartObjects("Diagramm 2").Activate
ActiveChart.SetSourceData Source:=Range( _
"Tabelle2!$B$4,Tabelle2!$L$4:$V$4,Tabelle2!$B$6:$B$" & 7 + q & ",Tabelle2!$L$6:$V$" & 7 _
+ q)
ActiveSheet.ChartObjects("Diagramm 2").Top = Range("B" & 8 + q).Top
ActiveSheet.ChartObjects("Diagramm 2").Left = Range("B" & 8 + q).Left
End Sub
'KurvenZeichnen1 = KurvenZeichnen2, nur die Source-Range angepasst auf "KurvenZeichnen"Sub KurvenZeichnen2()
q = Workbooks("DiagrammbereichErweitern.xlsm").Worksheets("Tabelle2").Cells(2, 2).Value
Sheets("Tabelle2").Select
ActiveSheet.ChartObjects("Diagramm 2").Activate
ActiveChart.SetSourceData Source:=Range( _
"Tabelle2!$B$4,Tabelle2!$K$4:$W$4,Tabelle2!$B$6:$B$" & 7 + q & ",Tabelle2!$K$6:$W$" & 7 _
+ q)
ActiveSheet.ChartObjects("Diagramm 2").Top = Range("B" & 8 + q).Top
ActiveSheet.ChartObjects("Diagramm 2").Left = Range("B" & 8 + q).Left
End Sub