TL;DR — Es gibt kein einzelnes „eine Zelle leeren".
.ClearContentswischt Wert und Formel, behält aber die Formatierung — das, was Sie in neunzig Prozent der Fälle wollen..Clearwischt alles, Formate und Rahmen eingeschlossen, nutzen Sie es also nur, um eine Zelle auf werksfrisch-leer zurückzusetzen..ClearFormatswischt die Formatierung und behält die Werte.cell.Value = ""zu setzen ist nicht leer — es hinterlässt einen String der Länge null, denISBLANKals nicht leer liest. Und.Clearist nicht.Delete: Clear leert die Zelle an Ort und Stelle, Delete entfernt sie und verschiebt ihre Nachbarn.
Range("A2:Z1000").ClearContents ' Daten weg, Vorlage (Rahmen/Farben/Formate) behalten
Range("A2:Z1000").Clear ' ALLES weg - Sie bauen jetzt die Formatierung neu
Range("A2:Z1000").ClearFormats ' Formatierung weg, Werte behalten
Range("A2").Value = "" ' NICHT leer - ein leerer String; ISBLANK ist False
Range("A2").ClearContents ' wirklich leer
Jeder lernt zuerst .ClearContents und fragt sich dann, warum .Clear „meine Rahmen gelöscht hat", warum
eine „leere" Zelle immer noch ein COUNTA auslöst, oder warum das Leeren eines Range Formeln drei Spalten
weiter kaputt machte. Alles stammt aus einer Idee, die festzuhalten sich lohnt: Eine Zelle ist ein
Stapel unabhängiger Schichten, und Leeren heißt zu wählen, welche Schichten gewischt werden. Nehmen Sie
den Radierer, der zu der Schicht passt, die Sie meinen, und die Überraschungen verschwinden.
Was Sie lernen
- Das mentale Modell — eine Zelle besteht aus Schichten, und Leeren wählt, welche Schichten gewischt werden
.ClearContentsgegenüber.Cleargegenüber.ClearFormats- Warum
cell.Value = ""ein Schein-Leer ist, und was eine Zelle wirklich leert - Warum
.Clearund.Deleteverschiedene Operationen sind, keine Synonyme - Ein ganzes Blatt oder einen UsedRange in einem einzigen schnellen Aufruf leeren
Das mentale Modell: eine Zelle besteht aus Schichten, Leeren wählt, welche
Eine Zelle ist nicht ein Ding. Sie hält einen Wert oder eine Formel, ein Zahlenformat, eine Schrift und Füllung, Rahmen, bedingte Formatierung, Gültigkeitsprüfung und Kommentare — unabhängige Schichten, gestapelt in derselben Zelle. Es gibt keine Methode namens „clear"; es gibt eine Familie von Methoden, deren jede eine gewählte Teilmenge entfernt:
Range("A1").ClearContents ' entfernt: Wert/Formel behaelt: alles andere
Range("A1").ClearFormats ' entfernt: Zahlenformat, Schrift, Fuellung, Rahmen behaelt: Wert
Range("A1").Clear ' entfernt: ALLES oben Genannte
Sobald Sie die Schichten sehen, lesen sich die Methodennamen als genau das, was sie tun. Die Frage ist nie „wie leere ich diese Zelle" — sie ist „welche Schichten will ich weg", und die Antwort wählt die Methode.
ClearContents vs Clear vs ClearFormats
.ClearContents ist das Arbeitstier: die Daten wischen, die Vorlage behalten. Es entfernt Werte und
Formeln und lässt Rahmen, Farben, Zahlenformate und Gültigkeitsprüfung intakt — was genau das bedeutet,
was „die Zahlen vom letzten Monat löschen, damit ich die von diesem Monat eingeben kann" heißt:
Range("B2:B50").ClearContents ' Zahlen weg, die formatierte Tabelle sieht immer noch wie eine Tabelle aus
.Clear ist der Vorschlaghammer: Es entfernt den Inhalt und jede Formatierungsschicht — Rahmen,
Füllungen, bedingte Formatierung, Gültigkeitsprüfung, Kommentare. Das ist der häufigste versehentliche
Schaden in VBA: zu .Clear zu greifen, um einen formatierten Range zu „leeren", und zu entdecken, dass
die Rahmen und Farben, die Sie gebaut haben, auch weg sind.
Range("B2:B50").Clear ' jetzt ist B2:B50 leer UND unformatiert - Zeit zum Neuaufbau
Nutzen Sie .Clear nur, wenn Sie wirklich „diese Zellen auf einen brandneuen, unformatierten Zustand
zurücksetzen" meinen. .ClearFormats ist das gegenteilige chirurgische Werkzeug — Formatierung abziehen,
die Werte behalten — und es hat gezielte Geschwister für eine einzelne Schicht: .ClearComments,
.ClearHyperlinks, .ClearNotes, .ClearOutline. Wählen Sie die Schicht, wählen Sie die Methode.
Die Leerstring-Falle: ein Leerstring ist nicht dasselbe wie leer
Das ist die stille. Einen leeren String zuzuweisen leert eine Zelle nicht — es speichert einen String der Länge null, was ein Wert ist, nicht die Abwesenheit eines Werts:
Range("A1").Value = "" ' A1 haelt jetzt einen STRING der Laenge null
' ISBLANK(A1) ist False; COUNTA zaehlt A1; IsEmpty(Range("A1")) ist False
Range("A1").ClearContents ' A1 ist jetzt echt leer
' ISBLANK(A1) ist True; COUNTA ignoriert A1; IsEmpty(Range("A1")) ist True
Eine auf "" gesetzte Zelle sieht auf dem Bildschirm leer aus, verhält sich aber als gefüllt: COUNTA
zählt sie, ISBLANK und IsEmpty melden sie als nicht leer, Range.End(xlUp) stoppt an ihr, und
Diagramme und Pivot-Tabellen behandeln sie als Daten. Das erzeugt zum Wahnsinn treibende „die Zelle ist
leer, aber Excel ist anderer Meinung"-Bugs. Um eine Zelle zu leeren, nutzen Sie .ClearContents (oder
weisen Empty zu: Range("A1").Value = Empty), nie = "". Die Unterscheidung zwischen einer wirklich
leeren Zelle und einem leeren String ist eines der nützlichsten Dinge, die man verinnerlichen sollte;
siehe VBA Cell Value dazu, wie Werte zurückgelesen werden.
Clear ist nicht Delete: die Verschiebung, die Adressen bricht
.Clear und .Delete klingen wie Synonyme und sind es nicht. .Clear leert die Zelle, lässt sie aber,
wo sie ist. .Delete entfernt die Zelle ganz und verschiebt ihre Nachbarn nach oben oder links, um
das Loch zu füllen — also ändert sich jede Adresse unterhalb oder rechts der Löschung, und Formeln, die
auf die verschobenen Zellen zeigen, können brechen oder #REF! zurückgeben.
Range("A5").ClearContents ' A5 ist leer; A6, A7, ... bleiben, wo sie sind
Range("A5").Delete Shift:=xlUp ' A5 ist WEG; A6 wird A5, A7 wird A6, Adressen verschieben sich
Ist Ihr Ziel „diese Zelle leer machen", ist es immer .ClearContents — nie .Delete. Greifen Sie nur
dann zu .Delete, wenn Sie die Zelle, Zeile oder Spalte tatsächlich weg haben wollen und die
Verschiebung der Sinn ist, etwa beim Entfernen leerer Zeilen. Zeilen sicher zu löschen (von unten nach
oben schleifen, EntireRow nutzen) ist ein eigenes Thema; siehe
VBA Delete Rows. Die beiden zu verwechseln ist der Weg, wie ein „Aufräum"-Makro
still ein Blatt durcheinanderbringt.
Ein ganzes Blatt oder einen UsedRange in einem Aufruf leeren
Leeren ist eine Range-Operation, erledigen Sie es also in einem Aufruf, nicht in einer Zelle-für-Zelle-Schleife. Eine Schleife überquert bei jeder Zelle von VBA nach Excel und kriecht auf großen Ranges; ein Aufruf auf dem ganzen Range ist eine einzige Operation (dasselbe Roundtrip-Prinzip wie beim Lesen von Werten — siehe VBA Cell Value):
ws.UsedRange.ClearContents ' alle Daten auf dem Blatt leeren, Formate behalten
ws.Cells.Clear ' das ganze Blatt wischen, Inhalt und Formate
Range("A2", Range("A2").End(xlDown)).ClearContents ' eine Datenspalte unter einer Kopfzeile leeren
UsedRange und CurrentRegion zielen auf „alles mit Daten", ohne eine Range-Höhe hart zu verdrahten;
siehe VBA UsedRange. Meine Faustregel: standardmäßig .ClearContents.
.Clear ist ein Zurücksetzen-auf-Werk, kein Radierer; .Delete ist strukturelle Chirurgie, kein
Radierer; = "" ist ein Schein-Leer-Bug. Neun von zehn Malen ist das Verb, das Sie wollen,
.ClearContents, und das zehnte ist .ClearFormats.
Wie ExcelMaster hilft
Die Leer-Fehler, die echte Zeit kosten, sind stille: das .Clear, das die Rahmen der Vorlage mitnahm, das
= ""-„Leer", das ein nachgelagertes COUNTA weiterzählte, das .Delete, das eine Spalte verschob und
Formeln zwei Blätter weiter brach. Jeder tut etwas — nur nicht das, was Sie meinten.
ExcelMaster greift zu dem Radierer, der
zu Ihrer Absicht passt. Bitten Sie es, „die Daten zu leeren, aber das Layout zu behalten", und es nutzt
.ClearContents auf der UsedRange; bitten Sie es, „dieses Blatt vollständig zurückzusetzen", und es nutzt
.Clear. Es leert Zellen mit .ClearContents statt mit = "", sodass Ihre Leerzellen wirklich leer
sind, und es behält .Delete für den Fall, dass Sie tatsächlich Zeilen entfernen wollen — von unten nach
oben erledigt, sodass nichts darunter verrutscht. Sie sagen, was weg soll; es wählt die Methode, die den
Rest der Zelle intakt lässt.
Häufig gestellte Fragen
Was ist der Unterschied zwischen Clear und ClearContents in VBA?
.ClearContents entfernt nur die Werte und Formeln und behält Formatierung, Rahmen, Zahlenformate und
Gültigkeitsprüfung. .Clear entfernt alles — Inhalt und alle Formatierungsschichten. Nutzen Sie
.ClearContents, um Daten zu wischen und dabei eine Vorlage intakt zu halten, und .Clear nur, wenn Sie
die Zellen auf einen völlig leeren, unformatierten Zustand zurücksetzen wollen.
Wie leere ich Zellinhalte, behalte aber die Formatierung in VBA?
Nutzen Sie .ClearContents: Range("B2:B50").ClearContents entfernt die Werte und Formeln und lässt
dabei Rahmen, Farben, Zahlenformate und Gültigkeitsprüfung an ihrem Platz. Meiden Sie .Clear, das all
diese Formatierung ebenfalls abzieht, und meiden Sie = "", das einen String der Länge null hinterlässt
statt einer wirklich leeren Zelle.
Ist eine Zelle auf "" zu setzen dasselbe wie sie in VBA zu leeren?
Nein. Range("A1").Value = "" speichert einen String der Länge null, was ein Wert ist: ISBLANK gibt
False zurück, COUNTA zählt die Zelle, und IsEmpty meldet sie als nicht leer. Um eine Zelle wirklich
leer zu machen, nutzen Sie Range("A1").ClearContents oder Range("A1").Value = Empty. Die
Leerstring-Zelle sieht leer aus, verhält sich aber als gefüllt.
Was ist der Unterschied zwischen Clear und Delete in VBA?
.Clear (und .ClearContents) leert eine Zelle, lässt sie aber an ihrem Platz, sodass sich die
umliegenden Adressen nicht ändern. .Delete entfernt die Zelle ganz und verschiebt die benachbarten
Zellen nach oben oder links, um die Lücke zu füllen, was jede Adresse unterhalb oder rechts davon ändert
und Formeln mit #REF! brechen kann. Nutzen Sie .ClearContents, um eine Zelle zu leeren, und .Delete
nur, wenn Sie sie weg haben wollen.
Wie leere ich ein ganzes Blatt oder einen UsedRange in VBA?
Um alle Daten zu leeren, aber die Formatierung zu behalten, nutzen Sie ws.UsedRange.ClearContents. Um
das ganze Blatt einschließlich der Formate zu wischen, nutzen Sie ws.Cells.Clear. Beide handeln in einem
einzigen Aufruf, was weit schneller ist als Zelle für Zelle zu schleifen, und UsedRange zielt genau auf
die Region, die Daten enthält, ohne eine Range-Größe hart zu verdrahten.
Getestet in
Getestet in: Excel 365 (Windows 11), VBA 7.1 — zuletzt geprüft am 01.09.2026.
Verwandte Anleitungen: VBA Cell Value · VBA Delete Rows · VBA Copy Paste · VBA UsedRange · VBA Number Format
