Frage von VBANeuling, 33

Hallo Allerseits, wie kann ich über ein Makro in einem Tabellenblatt nach bestimmten Zellinhalten suchen, z.B. #NA N/A und dann diesen Wert löschen?

Antwort
von Suboptimierer, 24
Sub LoescheFehler()
  Dim rBereich As Range
  Dim rZelle As Range
  Set rBereich = Range("A1:C10")
  For Each rZelle In rBereich
    If IsError(rZelle.Value) Then _
      rZelle.Clear
  Next
End Sub

Du kannst auch den Fehler in der Formel abfangen, die #NV zurück gibt. Nutze hierfür ISTFEHLER, ISTNV oder WENNFEHLER. Letztere bevorzuge ich, obwohl sie leider universell ist, da bei keinem Fehler in der Bedingung die Bedingung nicht ein zweites Mal ausgeführt werden muss..

Kommentar von augsburgchris ,

Funktioniert aber nur, wenn die Zelle einen echten Fehlerwert enthält, oder?

Kommentar von Suboptimierer ,

=NV() triggert

Achso, ja, das funktioniert nicht bei Text. Wer als Text in eine Zelle #NV schreibt, der gehört aber auf die stille Treppe ;P

Antwort
von augsburgchris, 23

Enthalten die Zellen die entsprechenden Fehler werte oder den Textstring "N/A"?

Muss es VBA sein? geht leichter über "Ersetzen" oder "Gehe zu"

Kommentar von VBANeuling ,

Hallo augsburgchris, danke für Deine Antwort! Die Zellen enthalten die entsprechenden Fehlerwerte, da die Daten aus einem externen Datensystem gezogen werden. Die Suchen-Ersetzen Funktion ist eine super Idee. ich habe das einfach mit Makro aufgezeichnet (da ich das jeden Tag machen muss, geht das dann schneller mit VBA-Button!). Allerdings klappt es noch nicht ganz einwandfrei. Es löscht nur einen Fehlertyp ":="#N/A Field Not Applicable", nicht aber die anderen...Woran könnte das liegen? Hier das makro:

Sub Fehlemeldungen_löschen()
'
' Fehlemeldungen_löschen Makro
'

'
    Cells.Replace What:="#NA N/A", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
   
    Cells.Replace What:="#N/A Field Not Applicable", Replacement:="", LookAt _
        :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
   
    Cells.Replace What:="#N/A Invalid Security", Replacement:="", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
   
    Cells.Replace What:="#NV", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
End Sub

Kommentar von augsburgchris ,

Siehe (in deinem Fall) absolut korrekte Antwort von Suboptimierer

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten