#Fehler! per VBA abfangen

#Fehler! per Makro (VBA) finden und behandeln

Zu schnell schle­icht sich in eine Tabelle eine durch Excel gener­ierte Fehler­mel­dung ein. Und manch­mal soll die irgend­wie „behan­delt” wer­den. Damit ist nicht in jedem Fall gemeint, dass die Ursache bere­inigt wird son­dern auch die Möglichkeit, die Fehler­mel­dung ein­fach zu löschen.

Natür­lich geht das nicht so „ein­fach mal eben”, denn der Fehler tritt ja wegen ein­er Formel oder ein­er Funk­tion auf, welche auf­grund der übergebe­nen Werte diese „Antwort” gibt. – Wie dem auch sei, angenom­men der Fehler #DIV/0! soll ein­fach durch "" (also einen Leer­String) erset­zt wer­den, dann bietet sich zuerst fol­gen­des an:

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

Das funk­tion­iert auch so weit. Aber der „kleine” Nachteil: Jed­er Fehler im Tabel­len­blatt wird dann so behan­delt, nicht nur #DIV/0!. Der am ehesten zielführende Ausweg wäre beispiel­sweise 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

Jet­zt müsste schon durch einen ganz dum­men Zufall in ein­er Zelle der TEXT und nicht die Fehler­mel­dung #DIV/0! ste­hen, wenn der falsche Zellinhalt gelöscht wird; und das ist höchst unwahrschein­lich.

Ich ergänze hier noch ein­mal den Code, um auch diesen unwahrschein­lichen Fall abz­u­fan­gen und füge noch zwei weit­ere Fehler­möglichkeit­en 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 Fehler­code des Work­Sheet­Func­tion – Objek­ts abfan­gen bzw. erfra­gen kön­nen, aber wer hat schon die ganzen numerischen Werte im Kopf. Da ist solch eine Lösung gewiss prak­tik­abler und auf jeden Fall trans­par­enter.

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

[NachOben­Let­zte Verweis=„MF| T&T: #Fehler! per VBA abfra­gen”]
Dieser Beitrag wurde unter Code-Schnipsel, Fehlerbehandlung, Tipps und Tricks, Verschiedenes abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.