Excel VBA Tutorial: Inhalte löschen, Formeln behalten (Tabellenblatt zurücksetzen)
Hier ist ein ausführliches Tutorial, wie du in Excel mithilfe von VBA-Makros ein Tabellenblatt zurücksetzen kannst, ohne dabei deine wichtigen Formeln zu löschen.
In vielen Excel-Anwendungen (wie Rechnungsformularen, Kalkulationstools oder monatlichen Reports) möchte man die eingegebenen Daten per Knopfdruck löschen, um das Blatt für eine neue Eingabe vorzubereiten. Das Problem: Ein einfaches "Entfernen" löscht oft auch die mühsam erstellten Formeln.
Mit diesem VBA-Makro automatisierst du den Prozess und stellst sicher, dass nur die manuellen Eingaben verschwinden.
Schritt 1: Die Registerkarte „Entwicklertools“ aktivieren
Falls du sie noch nicht siehst, musst du die Entwicklertools einblenden:
- Klicke mit der rechten Maustaste auf ein beliebiges Menüband (z.B. „Start“).
- Wähle Menüband anpassen....
- Setze im rechten Fenster den Haken bei Entwicklertools.
- Bestätige mit OK.
Schritt 2: Den VBA-Editor öffnen
- Gehe auf die Registerkarte Entwicklertools.
- Klicke ganz links auf Visual Basic (oder drücke
ALT+F11). - Klicke im Menü des Editors auf Einfügen -> Modul.
- Ein leeres weißes Fenster erscheint. Hier kopierst du den Code hinein.
Schritt 3: Der VBA-Code
Kopiere den folgenden Code in das Modul-Fenster:
Sub TabellenblattZuruecksetzen()
' Deklaration des Bereichs
Dim Bereich As Range
' Fehlerbehandlung: Falls keine Konstanten gefunden werden, stürzt das Makro nicht ab
On Error Resume Next
' Festlegen, welcher Bereich bereinigt werden soll (hier: das aktive Blatt)
' xlCellTypeConstants steht für alle Zellen mit Werten, aber OHNE Formeln.
Set Bereich = Cells.SpecialCells(xlCellTypeConstants)
' Sicherheitsabfrage (Optional)
If MsgBox("Möchten Sie alle Eingaben löschen? Formeln bleiben erhalten.", vbQuestion + vbYesNo, "Inhalte löschen") = vbNo Then
Exit Sub
End If
' Die Inhalte der gefundenen Zellen löschen
If Not Bereich Is Nothing Then
Bereich.ClearContents
MsgBox "Das Tabellenblatt wurde zurückgesetzt!", vbInformation, "Erfolg"
Else
MsgBox "Keine manuellen Eingaben zum Löschen gefunden.", vbExclamation, "Hinweis"
End If
On Error GoTo 0
End Sub
Was macht dieser Code?
SpecialCells(xlCellTypeConstants): Dies ist das Herzstück. Es markiert nur Zellen, die Text oder Zahlen enthalten, die nicht durch eine Formel berechnet werden.On Error Resume Next: Verhindert eine Fehlermeldung, falls das Blatt bereits leer ist.ClearContents: Löscht die Werte, behält aber Formatierungen (Farben, Rahmen) bei.
Schritt 4: Einen Button erstellen
Damit das Makro leicht bedienbar ist, erstellen wir eine Schaltfläche:
- Gehe in Excel auf Einfügen -> Illustrationen -> Formen.
- Zeichne ein Rechteck oder einen abgerundeten Button auf dein Tabellenblatt.
- Klicke mit der rechten Maustaste auf die Form und wähle Makro zuweisen....
- Wähle
TabellenblattZuruecksetzenaus und klicke auf OK. - Du kannst die Form jetzt beschriften (z.B. "Blatt leeren").
Schritt 5: Die Datei richtig speichern
Da die Datei nun ein Makro enthält, kannst du sie nicht als normale .xlsx speichern.
- Gehe auf Datei -> Speichern unter.
- Wähle als Dateityp Excel-Arbeitsmappe mit Makros (.xlsm).
Profi-Tipp: Bestimmte Bereiche schützen
Falls du nur einen bestimmten Bereich (z.B. nur die Zellen B5 bis F20) löschen willst, ändere die Zeile im Code wie folgt:
Statt:
Set Bereich = Cells.SpecialCells(xlCellTypeConstants)
Schreibe:
Set Bereich = Range("B5:F20").SpecialCells(xlCellTypeConstants)
Zusammenfassung
Mit der Methode SpecialCells(xlCellTypeConstants) hast du den sichersten Weg gewählt, um Daten von Logik zu trennen. Deine Formeln sind sicher, während deine Eingabemasken mit einem Klick wieder wie neu aussehen!