ich lasse mir mittels VBA ein Säulendiagramm aus einem Tabellenblatt generieren, hier werden die Verbräuche von Strom Erdgeschoss dargestellt (Tabellenblatt: TabStromEG und Daten aus Spalte E).
Hier habe ich auch eine Sonderfunktion eingebaut, mit welcher ich über eine bestimmte Zelle die Anzahl der anzuzeigenden Daten bestimmt werden kann, z.B. nur die letzten drei Jahre anzeigen oder alle angelegten Jahre anzeigen.
Funktioniert auch alles soweit, nur möchte ich nun aus einem anderen Tabellenblatt (TabStromOG) die gleichen Daten mit den Daten aus TabStromEG in einem Diagramm gruppieren.
Auch soll hier die Funktion vorhanden sein, die anzuzeigenden Jahre selbst bestimmen zu können.
Wie kann dieses am einfachsten erweitert werden?
Hier der Code für das Diagramm für TabStromEG:
Sub DiaStromNZBearbeiten()
Dim AnzahlJahre As Integer
Dim LR As Long
Dim lngAnzahlEG As Long
Dim lngAnzahlOG As Long
Dim lngLauf As Long
Dim lngZeile As Long
Dim blnAlle As Boolean
If blnStart Then
blnStart = False
Exit Sub
End If
lngAnzahlEG = Worksheets("Einstellungen").Range("B14")
lngAnzahlOG = Worksheets("Einstellungen").Range("B16")
'Anzahl Jahre EG überprüfen
With Sheets("Einstellungen")
AnzahlJahre = WorksheetFunction.CountIf(Sheets("TabStromEG").Columns(2), "Nein")
If AnzahlJahre = "0" Then
Exit Sub
End If
End With
With Sheets(TB2)
.Columns("F:XFD").EntireColumn.Hidden = False 'ausgeblendete Spalten einblenden
LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte A
LC = .Cells(1, .Columns.Count).End(xlToLeft).Column 'letzte Spalte der Zeile 1
If .AutoFilterMode Then .AutoFilterMode = False 'Autofilter ausschalten
.Cells(2, LC + 2).Resize(LR - 1, 1).FormulaR1C1 = "=IF(AND(RC5=""""),""X"","""")"
.Cells(1, LC + 2) = "#TMP#"
.Columns(LC + 2).AutoFilter Field:=1, Criteria1:="=" 'Nur Leere anzeigen
If lngAnzahlEG > .AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count + 1 Then
lngZeile = 2
blnAlle = True
Else
For lngZeile = LR To 2 Step -1
If .Rows(lngZeile).RowHeight > 0 Then lngLauf = lngLauf + 1
If lngLauf = lngAnzahlEG Then Exit For
Next lngZeile
End If
Charts("DiaStromNZ").PlotVisibleOnly = True 'Ausgeblendete Zeilen weglassen
If Charts("DiaStromNZ").FullSeriesCollection.Count = 0 Then
Charts("DiaStromNZ").SeriesCollection.NewSeries
Charts("DiaStromNZ").SeriesCollection.NewSeries
End If
Charts("DiaStromNZ").FullSeriesCollection(1).XValues = Worksheets(TB2).Range("$A$" & lngZeile & ":$A$" & LR) '.SpecialCells(xlCellTypeVisible)
Charts("DiaStromNZ").FullSeriesCollection(1).Values = Worksheets(TB2).Range("$E$" & lngZeile & ":$E$" & LR) '.SpecialCells(xlCellTypeVisible)
Charts("DiaStromNZ").FullSeriesCollection(2).Values = Worksheets(TB3).Range("$E$" & lngZeile & ":$E$" & LR) '.SpecialCells(xlCellTypeVisible)
End With
End Sub
Viele Grüße, Frank.