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 = Truegehö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 oderSUBTOTAL— 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
.Hiddenzu.EntireColumnund.EntireRowgehö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, ...)oderAGGREGATE— diese ignorieren sehr wohl per Filter ausgeblendete Zeilen (undSUBTOTAL(109)ignoriert auch manuell ausgeblendete Zeilen), sodass sich eine gefilterte Summe beim Filtern aktualisiert.- AutoFilter — blendet aus und schließt aus
SUBTOTALaus, 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
