#Fehler! per VBA abfangen

#Fehler! per Makro (VBA) finden und behandeln

Zu schnell schleicht sich in eine Tabelle eine durch Excel generierte Fehlermeldung ein. Und manchmal soll die irgendwie „behandelt“ werden. Damit ist nicht in jedem Fall gemeint, dass die Ursache bereinigt wird sondern auch die Möglichkeit, die Fehlermeldung einfach zu löschen.

Natürlich geht das nicht so „einfach mal eben“, denn der Fehler tritt ja wegen einer Formel oder einer Funktion auf, welche aufgrund der übergebenen Werte diese „Antwort“ gibt. – Wie dem auch sei, angenommen der Fehler #DIV/0! soll einfach durch "" (also einen Leerstring) ersetzt werden, dann bietet sich zuerst folgendes an:

Sub Fehlerbereinigung_1()
   Dim c As Range
   For Each c In ActiveSheet.UsedRange
      If IsError(c) Then c = ""
   Next c
End Sub

Das funktioniert auch so weit. Aber der „kleine“ Nachteil: Jeder Fehler im Tabellenblatt wird dann so behandelt, nicht nur #DIV/0!. Der am ehesten zielführende Ausweg wäre beispielsweise dieser:

Sub Fehlerbereinigung_2()
   Dim c As Range
   For Each c In ActiveSheet.UsedRange
   If c.Text = "#DIV/0!" Then c = ""
   Next c
End Sub

Jetzt müsste schon durch einen ganz dummen Zufall in einer Zelle der TEXT und nicht die Fehlermeldung #DIV/0! stehen, wenn der falsche Zellinhalt gelöscht wird; und das ist höchst unwahrscheinlich.

Ich ergänze hier noch einmal den Code, um auch diesen unwahrscheinlichen Fall abzufangen und füge noch zwei weitere Fehlermöglichkeiten dazu:

Sub Fehlerbereinigung_3()
   Dim c As Range
   For Each c In ActiveSheet.UsedRange
      If IsError(c) Then
         Select Case c.Text
         Case "#DIV/0!"
            c = ""
         Case "#WERT!"
            c = "ZAHL erwartet!"
         Case "#NV"
            c = Null 'Wirklich leer, kein Text
         End Select
      End If
   Next c
End Sub

Ich räume ein, dass Sie den Fehler auch über den Fehlercode des WorksheetFunction – Objekts abfangen bzw. erfragen können, aber wer hat schon die ganzen numerischen Werte im Kopf. Da ist solch eine Lösung gewiss praktikabler und auf jeden Fall transparenter.

Die drei Code-Beispiele können Sie hier als *.zip-Datei herunter laden.

▲ nach oben …

Dieser Beitrag wurde unter Code-Schnipsel, Fehlerbehandlung, Tipps und Tricks, Verschiedenes abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.