🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

VBA Spalten und Zeilen ausblenden in Excel — ausgeblendet ist nicht gelöscht (und warum Ihre Summen sich nicht ändern)

|

VBA Spalten und Zeilen ausblenden in Excel — ausgeblendet ist nicht gelöscht (und warum Ihre Summen sich nicht ändern)

Kurz gesagt — Ausblenden ist die sanfteste der drei strukturellen Bearbeitungen und die am meisten missverstandene. Anders als Löschen (das Zeilen entfernt) oder Einfügen (das welche hinzufügt) ändert Ausblenden nichts an den Daten — es setzt die Anzeigegröße einer Spalte oder Zeile auf null. Die Zellen sind weiterhin da, weiterhin in jeder SUM, werden beim Kopieren des Bereichs weiterhin mitkopiert und bleiben per Code voll bearbeitbar. .Hidden = True gehört zu .EntireColumn / .EntireRow, nicht zu einer einzelnen Zelle. Die Falle, in die jeder tappt: Das Ausblenden einer Spalte entfernt sie nicht aus einer Summe — SUM(B:B) addiert die ausgeblendete Spalte B weiterhin. Blenden Sie zur Darstellung aus; muss etwas aus einer Berechnung verschwinden, ist das Löschen, Filtern oder SUBTOTAL — nicht Ausblenden.

' Hilfsspalten B:D ausblenden; jede Zeile ausblenden, deren Status "Done" ist.
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Report")

ws.Columns("B:D").Hidden = True                 ' ganze Spalten, eine Anweisung
ws.Rows("2:1000").EntireRow.Hidden = False      ' von komplett sichtbar starten, dann gezielt ausblenden
Dim i As Long
For i = 2 To 1000
    ws.Rows(i).Hidden = (ws.Cells(i, "Status").Value = "Done")
Next i

Ausblenden sieht aus wie der einfachste der drei Vorgänge, und mechanisch ist er das auch — eine einzige boolesche Eigenschaft. Eine Anleitung wert ist es wegen des mentalen Modells, denn „ausblenden“ bedeutet klammheimlich etwas anderes, als die meisten annehmen. Sie greifen danach, um Daten auszuschließen — aus einer Ansicht, aus einer Summe, aus einer Kopie — und Ausblenden erledigt nur das Erste davon. Das gerade zu rücken ist die ganze Schlacht; die Syntax braucht etwa eine Zeile.

Was Sie lernen

  • Das mentale Modell — Ausblenden verkleinert auf null, es entfernt die Daten nicht und schließt sie nicht aus
  • Warum .Hidden zu .EntireColumn und .EntireRow gehört
  • Die Falle, in die jeder tappt — ausgeblendete Zellen zählen weiterhin in Formeln und Kopien
  • Einblenden — die vergessene Hälfte und die Zeile, die ein festgefahrenes Blatt rettet
  • Manuell ausgeblendete Zeilen gegenüber per AutoFilter ausgeblendeten Zeilen beim Schleifen

Das mentale Modell: ausgeblendet ist nullbreit, nicht weg

Löschen entfernt eine Zeile; Einfügen fügt eine hinzu. Ausblenden tut weder das eine noch das andere — es nimmt eine bestehende Zeile oder Spalte und setzt ihre Höhe oder Breite auf null, sodass sie nicht auf dem Bildschirm gezeichnet wird. Alles andere bleibt unverändert. Die Daten sitzen genau dort, wo sie waren, an genau derselben Adresse; Range("B2") liest und schreibt den Wert in einer ausgeblendeten Spalte B ohne Weiteres. Eine ausgeblendete Zeile ist keine getarnte gelöschte Zeile — sie ist eine voll vorhandene Zeile, der Sie Excel einfach gesagt haben, sie nicht zu zeichnen.

Deshalb ist Ausblenden die nicht-strukturelle strukturelle Bearbeitung: Es ändert die Anzeige, nicht das Raster. Zeile 6 ist auch ausgeblendet noch Zeile 6; nichts rutschte nach oben, nichts verschob sich nach unten, es gibt hier also keine Schleifenrichtungsfalle — Sie können den ganzen Tag in einer schlichten von oben nach unten laufenden Schleife aus- und einblenden. Die Feinheit liegt nicht darin, wie Sie ausblenden; sie liegt im Glauben, die Daten seien irgendwohin verschwunden. Sind sie nicht.

Die Syntaxregel: .Hidden gehört zur ganzen Spalte oder Zeile

Hidden ist eine Eigenschaft einer ganzen Spalte oder einer ganzen Zeile — nicht einer beliebigen Zelle oder eines Blocks. Sie können B2:B10 nicht ausblenden; Sie blenden die Spalten oder Zeilen aus, zu denen diese Zellen gehören. Also sprechen Sie entweder die ganze Spalte/Zeile direkt an oder erweitern einen Zellbereich mit .EntireColumn / .EntireRow:

ws.Columns("B").Hidden = True                 ' Spalte B ausblenden
ws.Columns("B:D").Hidden = True               ' B, C und D ausblenden
ws.Rows("10:20").Hidden = True                ' Zeilen 10 bis 20 ausblenden
ws.Range("B2:D2").EntireColumn.Hidden = True  ' einen Zellbereich auf seine ganzen Spalten erweitern

Versuchen Sie, .Hidden auf einem Teilbereich zu setzen, laufen Sie entweder in einen Fehler oder blenden mehr aus als beabsichtigt, weil die Eigenschaft schlicht nicht auf Zellebene definiert ist. .EntireColumn und .EntireRow sind dieselben Erweiterungen, die Sie beim Löschen und Einfügen nutzen — der wiederkehrende Griff, der Sie von „diesen Zellen“ zu „der ganzen Spalte/Zeile, in der sie sitzen“ bringt.

Die Falle, in die jeder tappt: ausgeblendete Zellen zählen weiterhin

Hier ist der Glaube, der echte Bugs verursacht: Das Ausblenden einer Spalte entfernt sie aus meinen Summen. Tut es nicht. Ausblenden ist eine Anzeigeeinstellung; es hat keine Wirkung auf die Berechnung. =SUM(B:B) schließt die ausgeblendete Spalte B ein. =SUM(A2:A100) schließt jede ausgeblendete Zeile in dieser Spanne ein. Kopieren Sie einen Bereich, der ausgeblendete Spalten umfasst, kommen die ausgeblendeten Werte beim Einfügen mit. Stellen Sie eine ausgeblendete Datenreihe in einem Diagramm dar, kann sie — sofern Sie dem Diagramm nichts anderes sagen — verschwinden oder auch nicht. Ausblenden ändert, was ein Mensch sieht, und fast nichts daran, was eine Formel oder eine Kopie tut.

Wenn Ihr eigentliches Ziel also lautet „diese Werte aus der Summe herauslassen“, ist Ausblenden das falsche Werkzeug, und der Griff danach erzeugt einen Bericht, dessen Zahlen nicht zu seinen sichtbaren Zeilen passen. Die richtigen Werkzeuge:

  • SUBTOTAL(109, ...) oder AGGREGATE — diese ignorieren sehr wohl per Filter ausgeblendete Zeilen (und SUBTOTAL(109) ignoriert auch manuell ausgeblendete Zeilen), sodass sich eine gefilterte Summe beim Filtern aktualisiert.
  • AutoFilter — blendet aus und schließt aus SUBTOTAL aus, der ehrliche Weg, „nur passende Zeilen anzeigen und summieren“.
  • Löschen — wenn die Daten wirklich nicht existieren sollten, entfernen Sie sie (siehe VBA Zeilen löschen).

Nehmen Sie .Hidden, wenn die Daten bleiben sollen, in der Rechnung bleiben und nur die Ansicht nicht überladen sollen — Hilfsspalten hinter einem Dashboard, Arbeitszeilen neben einer gedruckten Zusammenfassung. Genau dafür ist Ausblenden da.

Einblenden: die vergessene Hälfte und die Rettungszeile

Jedes Ausblenden braucht ein passendes Einblenden, und der Bug ist, zu vergessen, dass eine breitere Auswahl das Einblenden erledigen muss. Ist Spalte B ausgeblendet und Sie fassen nur je Columns("B") an, bekommt ein Nutzer, der Ihr Makro nie ausführt, sie von Hand nicht leicht zurück — er muss über die Lücke hinweg auswählen. Im Code ist die zuverlässige Rettung, über einen großzügigen Bereich oder das ganze Blatt einzublenden:

ws.Columns("A:Z").Hidden = False   ' jede ausgeblendete Spalte in A:Z einblenden
ws.Rows("1:1000").Hidden = False   ' jede ausgeblendete Zeile in dieser Spanne einblenden
ws.Cells.EntireColumn.Hidden = False   ' Radikaloption: JEDE Spalte auf dem Blatt einblenden
ws.Cells.EntireRow.Hidden = False       ' ...und jede Zeile

ws.Cells.EntireColumn.Hidden = False ist die Zeile, die Sie sich merken sollten — sie blendet alles ein, egal welche Spalten ausgeblendet wurden und von wem. Noch eine Unterscheidung, die es zu kennen lohnt: Columns("B").ColumnWidth = 0 zu setzen macht eine Spalte ebenfalls unsichtbar, ist aber nicht dasselbe wie .Hidden = True.Hidden ist die echte Eigenschaft, sie übersteht Hin- und Rückwege sauber, und sie ist es, die „Einblenden“ in der Oberfläche umschaltet. Bevorzugen Sie .Hidden; behandeln Sie eine buchstäbliche Breite von null als zu behebenden Bug, nicht als Technik.

Ausgeblendete gegen gefilterte Zeilen: dasselbe Flag, anders beim Schleifen

Sowohl eine manuell ausgeblendete als auch eine per AutoFilter ausgeblendete Zeile melden .Hidden = True, sodass eine Schleife, die If ws.Rows(i).Hidden prüft, sie nicht auseinanderhalten kann — was zählt, wenn Sie nur auf „die Zeilen, die der Nutzer sieht“ wirken wollen. Der saubere Weg, sichtbare Zellen zu greifen, ist SpecialCells:

' Nur die aktuell sichtbaren Zeilen durchlaufen (überspringt ausgeblendete und herausgefilterte Zeilen).
Dim rng As Range, area As Range
On Error Resume Next
Set rng = ws.Range("A2:A1000").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rng Is Nothing Then
    For Each area In rng.Areas          ' sichtbare Zellen kommen als mehrere Blöcke zurück
        ' ... area verarbeiten ...
    Next area
End If

Zwei Dinge zum Verinnerlichen. Erstens: SpecialCells(xlCellTypeVisible) liefert die sichtbaren Zellen als mehrere Bereiche zurück (jeder ununterbrochene Lauf sichtbarer Zeilen ist ein Bereich), durchlaufen Sie also .Areas, nicht einen einzelnen zusammenhängenden Block. Zweitens: Eine schlichte For i = 2 To 1000-Schleife besucht ausgeblendete und gefilterte Zeilen wie jede andere — Ausblenden entfernt eine Zeile nicht aus der Iteration, nur aus der Ansicht. Meinen Sie „die Zeilen auf dem Bildschirm“, verlangen Sie ausdrücklich sichtbare Zellen; nehmen Sie nicht an, die Schleife überspringe die ausgeblendeten.

Wie ExcelMaster hilft

Ausblenden bringt Menschen nicht an der Syntax zu Fall, sondern an der Erwartung: Summen, die hartnäckig ausgeblendete Spalten einschließen, ein Blatt, das niemand wieder flottbekommt, weil der Einblendebereich zu schmal war, eine Schleife, die herausgefilterte Zeilen verarbeitet, weil .Hidden nicht das bedeutete, was man dachte. Die Korrekturen sind allesamt klein und allesamt leicht zu übersehen.

ExcelMaster lässt Sie die Absicht beschreiben — „blende die Hilfsspalten B bis D aus“, „blende jede mit Done markierte Zeile aus“, „zeige in der Summe nur sichtbare Zeilen“. Es schreibt .EntireColumn.Hidden / .EntireRow.Hidden korrekt, greift zu SUBTOTAL oder SpecialCells(xlCellTypeVisible), wenn Sie eigentlich „aus der Rechnung ausschließen“ statt bloß „ausblenden“ meinen, und gibt Ihnen einen Alles-einblenden-Weg, damit kein Blatt festgefahren zurückbleibt. Sie behalten die Arbeitsmappe und den Code; Sie sparen sich die Überraschung einer Summe, die ignoriert, was Ihre Augen Ihnen sagen.

Häufig gestellte Fragen

Wie blende ich in VBA eine Spalte aus?

Setzen Sie .Hidden = True auf der ganzen Spalte: ws.Columns("B").Hidden = True oder ws.Columns("B:D").Hidden = True für mehrere. Von einem Zellbereich aus erweitern Sie zuerst: ws.Range("B2:D2").EntireColumn.Hidden = True. .Hidden ist eine Eigenschaft einer ganzen Spalte oder Zeile, Sie können es also nicht auf einen Teilbereich anwenden.

Entfernt das Ausblenden einer Spalte sie aus einer SUM in Excel?

Nein. Ausblenden ändert nur die Anzeige — =SUM(B:B) schließt die ausgeblendete Spalte B weiterhin ein, und das Kopieren eines Bereichs kopiert ausgeblendete Werte weiterhin mit. Um Zellen aus einer Summe auszuschließen, nehmen Sie SUBTOTAL(109, ...) oder AGGREGATE (die gefilterte und mit 109 auch manuell ausgeblendete Zeilen ignorieren), setzen einen AutoFilter oder löschen die Daten. Ausblenden ist Darstellung, nicht Berechnung.

Wie blende ich in VBA alle Spalten und Zeilen ein?

Nehmen Sie ws.Cells.EntireColumn.Hidden = False, um jede Spalte einzublenden, und ws.Cells.EntireRow.Hidden = False, um jede Zeile einzublenden. Weil es das ganze Blatt anspricht, funktioniert es unabhängig davon, welche Spalten oder Zeilen ausgeblendet waren — die zuverlässige Rettung für ein Blatt, auf dem Sie die ausgeblendeten von Hand nicht finden.

Wie blende ich Zeilen anhand eines Zellwerts aus?

Durchlaufen Sie die Zeilen und setzen Sie .Hidden aus einer Prüfung: ws.Rows(i).Hidden = (ws.Cells(i, "C").Value = "Done"). Weil Ausblenden das Raster nicht verschiebt, ist eine schlichte von oben nach unten laufende Schleife in Ordnung — kein rückwärts Schleifen nötig wie beim Löschen. Starten Sie von einem komplett sichtbaren Zustand, damit zuvor ausgeblendete Zeilen zurückgesetzt werden.

Warum verarbeitet meine Schleife weiterhin ausgeblendete Zeilen?

Weil das Ausblenden einer Zeile sie nicht aus der Iteration entfernt — eine For i = 2 To 1000-Schleife besucht ausgeblendete und gefilterte Zeilen genauso wie sichtbare. Um nur auf das zu wirken, was auf dem Bildschirm ist, holen Sie die sichtbaren Zellen mit Range(...).SpecialCells(xlCellTypeVisible) und durchlaufen deren .Areas; eine manuelle .Hidden-Prüfung kann per Filter ausgeblendete nicht von manuell ausgeblendeten Zeilen unterscheiden.

Getestet in

Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 07.08.2026.

Verwandte Anleitungen: VBA Zeilen löschen · VBA Zeilen und Spalten einfügen · VBA Range · VBA For-Schleife · VBA Letzte Zeile