VBA zur Prüfung von Zellen mit #NAME? Fehler
Schritt-für-Schritt-Anleitung
- Öffne den VBA-Editor: Drücke
ALT + F11 in Excel.
- Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt und wähle
Einfügen > Modul.
-
Füge den folgenden Code ein:
Sub RemoveNameErrors()
Dim lngZeile As Long
Dim lngLetzteZeile As Long
Dim wks As Worksheet
Set wks = ThisWorkbook.Sheets("DeinBlattname")
lngLetzteZeile = wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
For lngZeile = lngLetzteZeile To 2 Step -1
If wks.Cells(lngZeile, 1).Value = CVErr(xlErrName) Then
wks.Rows(lngZeile).Delete shift:=xlUp
End If
Next lngZeile
End Sub
- Ändere "DeinBlattname": Ersetze den Platzhalter durch den Namen deines Arbeitsblatts.
- Führe das Makro aus: Drücke
F5 oder gehe zu Run > Run Sub/UserForm.
Häufige Fehler und Lösungen
- Error #NAME? wird nicht erkannt: Überprüfe, ob die Zelle tatsächlich den Fehlerwert enthält und nicht einen Text, der wie ein Fehler aussieht.
- Zellen werden nicht gelöscht: Stelle sicher, dass die Schleife von der letzten Zeile zur ersten geht, um das Löschen von Zeilen korrekt zu verarbeiten.
- Unzureichender Zellinhalt: Wenn der Zellinhalt nicht breit genug ist, kann Excel den Fehler möglicherweise nicht richtig anzeigen. Stelle die Spaltenbreite sicher.
Alternative Methoden
Eine weitere Möglichkeit, um Zellen mit dem Fehler #NAME? zu identifizieren, besteht darin, die .Text-Eigenschaft anstelle von .Value zu verwenden. Beispiel:
If wks.Cells(lngZeile, 1).Text = "#NAME?" Then
wks.Rows(lngZeile).Delete shift:=xlUp
End If
Beachte jedoch, dass dies von der Formatierung der Zelle abhängt.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie Du mit Fehlern in Zellen umgehen kannst:
-
Löschen aller Fehler in einer bestimmten Spalte:
Sub DeleteErrorsInColumn()
Dim lngZeile As Long
Dim lngLetzteZeile As Long
Set wks = ThisWorkbook.Sheets("DeinBlattname")
lngLetzteZeile = wks.Cells(wks.Rows.Count, 1).End(xlUp).Row
For lngZeile = lngLetzteZeile To 1 Step -1
If IsError(wks.Cells(lngZeile, 1)) Then
wks.Rows(lngZeile).Delete shift:=xlUp
End If
Next lngZeile
End Sub
-
Fehler in einem Array speichern:
Dim errorCells As Collection
Set errorCells = New Collection
For lngZeile = 1 To lngLetzteZeile
If wks.Cells(lngZeile, 1).Value = CVErr(xlErrName) Then
errorCells.Add wks.Cells(lngZeile, 1).Address
End If
Next lngZeile
Tipps für Profis
- Direktfenster nutzen: Wenn Du auf eine Zelle mit einem Fehler klickst und im Direktfenster
?Selection.Text eingibst, siehst Du, wie der Fehler genau angezeigt wird. Dies kann nützlich sein, um den Vergleich im Code präzise zu gestalten.
- Fehlerbehandlung aktivieren: Nutze
On Error Resume Next, um Fehler im Code zu ignorieren, wenn Du mit vielen Daten arbeitest.
- Debugging: Verwende
Debug.Print innerhalb der Schleife, um zu sehen, welche Zellen überprüft werden.
FAQ: Häufige Fragen
1. Wie kann ich alle Fehler in mehreren Spalten gleichzeitig löschen?
Du kannst die Schleife so anpassen, dass sie mehrere Spalten überprüft und die Zeile löscht, wenn ein Fehler gefunden wird.
2. Was passiert, wenn ich .HasFormula verwende?
Wenn Du .HasFormula verwendest, löscht Du auch Zeilen mit Formeln, die möglicherweise keine Fehler sind. Dies könnte zu Datenverlust führen.
3. Wie kann ich sicherstellen, dass ich die richtige Zellreferenz verwende?
Verwende CStr() um den Wert in einen String zu konvertieren und vergleiche diesen mit dem erwarteten Wert.