VBA Makro: Nur sichtbare Zeilen für Diagramme verwenden
Schritt-für-Schritt-Anleitung
Um ein VBA Makro zu erstellen, das nur die sichtbaren Zeilen für ein Diagramm berücksichtigt, kannst Du die folgenden Schritte befolgen:
-
Öffne den VBA-Editor:
- Drücke
ALT + F11
, um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".
-
Kopiere den folgenden Code in das Modul:
Sub UpdateChartWithVisibleRows()
Dim oBlatt As Worksheet
Dim cht As Chart
Dim i As Integer
Dim iSerie As Integer
Set oBlatt = Worksheets("Data") ' Hier den Namen des Arbeitsblatts anpassen
Set cht = Worksheets("Diagramm").ChartObjects("Diagramm2").Chart ' Diagrammname anpassen
' Löscht bestehende Serien im Diagramm
For i = cht.SeriesCollection.Count To 1 Step -1
cht.SeriesCollection(i).Delete
Next i
' Erstellt neuen Diagrammbereich2
iSerie = 0
For i = 4 To 200
If oBlatt.Rows(i).Hidden = False Then
iSerie = iSerie + 1
cht.SeriesCollection.NewSeries
cht.SeriesCollection(iSerie).Name = "=Data!$B$" & CStr(i)
cht.SeriesCollection(iSerie).Values = "=Data!$BC$" & CStr(i) & ":$BG$" & CStr(i)
cht.SeriesCollection(iSerie).XValues = "=Data!$BC$2:$BG$2"
End If
Next i
Set oBlatt = Nothing
Set cht = Nothing
End Sub
-
Führe das Makro aus:
- Schließe den VBA-Editor und gehe zurück zu Excel. Drücke
ALT + F8
, wähle UpdateChartWithVisibleRows
und klicke auf "Ausführen".
Häufige Fehler und Lösungen
-
Fehler: Diagramm wird nicht aktualisiert
Lösung: Stelle sicher, dass die Namen des Arbeitsblatts und des Diagramms korrekt sind. Prüfe, ob das Diagramm tatsächlich existiert.
-
Fehler: Makro funktioniert nicht mit Filter
Lösung: Vergewissere Dich, dass der Autofilter auf das richtige Datenfeld angewendet wurde. Das Makro berücksichtigt nur sichtbare Zeilen.
Alternative Methoden
Eine alternative Methode besteht darin, die Daten in eine Pivot-Tabelle zu laden und die Filter dort anzuwenden. Dies kann eine effizientere Methode sein, um nur die gewünschten Daten zu visualisieren. Du kannst die Pivot-Tabelle dann direkt mit dem Diagramm verknüpfen.
Praktische Beispiele
Angenommen, Du hast eine Tabelle mit Verkaufsdaten und möchtest nur die Verkaufszahlen für die sichtbaren Zeilen in Deinem Diagramm darstellen. Verwende das bereitgestellte Makro, um die Serien automatisch zu aktualisieren, wenn der Autofilter aktiv ist.
Hier ein Beispiel für die Diagramm-Serienzuordnung:
cht.SeriesCollection(iSerie).Values = "=Data!$C$" & CStr(i) & ":$C$" & CStr(i) ' Annahme, dass die Verkaufszahlen in Spalte C sind
Tipps für Profis
-
Nutze die Application.ScreenUpdating = False
und Application.ScreenUpdating = True
, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren und die Ausführung zu beschleunigen.
-
Überlege, die Fehlerbehandlung mit On Error Resume Next
zu implementieren, um unerwartete Fehler während der Ausführung zu vermeiden.
FAQ: Häufige Fragen
1. Kann ich das Makro anpassen, um mehr als 200 Zeilen zu berücksichtigen?
Ja, Du kannst die Schleifenbedingungen anpassen, um mehr Zeilen zu berücksichtigen, z.B. For i = 4 To 500
.
2. Funktioniert das Makro in Excel Online?
Leider ist VBA nicht in Excel Online verfügbar. Du kannst es nur in der Desktopversion von Excel verwenden.
3. Was passiert, wenn alle Zeilen ausgeblendet sind?
Wenn alle Zeilen ausgeblendet sind, wird das Diagramm leer bleiben, da keine sichtbaren Daten vorhanden sind.