Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Makro: Nur sichtbare Zeilen verwenden

VBA Makro: Nur sichtbare Zeilen verwenden
mis0r
Hallo Leute!
Ich habe hier ein Makro geschrieben. Welches Formeln ersetzt und automatisch den Diagrammbereich eines Spinnendiagramms setzt.
Leider funktioniert diese Makro nicht mit ausgeblendeten Zeilen(also vom Autofilter ausgeblendet).
Könnt ihr mir helfen mein Makro zu erweitern? Wäre super weil es so nicht einsatzfähig ist weil in dieser Tabelle nur mit Auto filter gearbeitet wird.
'Überschreibt die Formeln der Zielwerte
Dim oBlatt As Worksheet
Set oBlatt = Tabelle1
With oBlatt
.Range("BC3").FormulaLocal = "=AV4/1000" 'Heat_Flux
.Range("BD3").FormulaLocal = "=AW4" 'HC_FLux
.Range("BE3").FormulaLocal = "=AX4" 'NOx_Flux
.Range("BF3").FormulaLocal = "=AY4*1000" 'SM_VAL2
.Range("BG3").FormulaLocal = "=AZ4" 'VPI
End With
Set oBlatt = Nothing
' Löscht Diagrammbereichs2 bis auf einen Wert(Zielwert)
Set cht = Diagramm2
With cht
For i = .SeriesCollection.Count To 1 Step -1
If i > 1 Then .SeriesCollection(i).Delete
Next i
End With
Set cht = Nothing
'Erstellt neuen Diagrammbereich2
For i = 4 To 200
Diagramm2.ChartArea.Select
Diagramm2.SeriesCollection.NewSeries
Diagramm2.SeriesCollection(i - 2).Name = "=Data!$B$" & CStr(i)
Diagramm2.SeriesCollection(i - 2).Values = "=Data!$BC$" & CStr(i) & ":$BG$" & CStr(i)
Diagramm2.SeriesCollection(i - 2).XValues = "=Data!$BC$2:$BG$2"
Next i=
Das ist der Übeltäter.
Mir geht es nur darum, das Diagramm so zu erweitern, dass es nur die vom AUtofilter angezeigten Reihen nimmt bzw. wenn der AUtofilter nicht aktiviert ist einfach alle Zeilen eingelesen werden
Ich hoffe ich konnte meine Frage deutlich genug stellen und hoffe, dass ihr mir helfen könnt.
Vielen Dank im Voraus
Michael
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Makro: Nur sichtbare Zeilen verwenden
18.08.2011 00:06:01
fcs
Hallo Michael,
dann muss du in der For-Next-Schleife zusätzlich die Hidden-Eigenschaft der Zeilen in der Tabelle mit den Daten prüfen und für die Datenreihen des Diagramms muss ein eigener Zähler hochgezählt werden.
Gruß
Franz
'Erstellt neuen Diagrammbereich2
Dim iSerie As Integer
Diagramm2.ChartArea.Select
iSerie = 0
For i = 4 To 200
If Worksheets("Data").Rows(i).Hidden = False Then
iSerie = iSerie + 1
Diagramm2.SeriesCollection.NewSeries
Diagramm2.SeriesCollection(iSerie).Name = "=Data!$B$" & CStr(i)
Diagramm2.SeriesCollection(iSerie).Values = "=Data!$BC$" & CStr(i) & ":$BG$" & CStr(i)
Diagramm2.SeriesCollection(iSerie).XValues = "=Data!$BC$2:$BG$2"
End If
Next i

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)" und wähle "Einfügen" > "Modul".
  3. 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
  4. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige