Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen mit #REF Error finden und löschen

Zellen mit #REF Error finden und löschen
13.12.2018 12:46:37
PurePowerPhil
Hi liebe Community,
Kann mir vllt jemand helfen? Ich habe schon diverse Google Suchen hinter mir aber hat mir bisher nicht recht weitergeholfen.
Also ich habe ein Overview-Sheet das Daten von diversen anderen Sheets zusammenfasst. Diese sind einfach per Referenz eingefügt.
Sobald nun in einem der diversen anderen Sheets eine neue Zeile mit einen neuen Eintrag einfüge und diese später wieder lösche, erscheint ein #REF Error im Overview-Sheet.
Nun möchte ich verhindern das dieser Ref Error im Overview auftaucht bzw. die Zeile mit dem Fehler löschen.
Dies habe ich mit einen einfachen Button realisiert.
Per Klick auf den Button wird das Overview-Sheet nach Ref Error's abgesucht.. Nur funktioniert das ganze nicht..
Der Debugger wirft einen Run-time Fehler '13' Type mismatch.
Hier ist mein Code:

Private Sub UpdateButton_Click()
Dim iRow As Long
Dim i As Long
Dim check_txt As String
iRow = ThisWorkbook.Sheets("MGMT-Overview").Cells(Rows.Count, 12).End(xlUp).Row
'Color in the important Content
ThisWorkbook.Sheets("MGMT-Overview").Range("F4:H" & iRow).Interior.Color = RGB(214, 220, 228)
'Search for any false Values in Sheet
For i = 4 To iRow
'Beide Versionen durch Google suchen gefunden und ohne erfolg ausprobiert
If Cells(2, i).Value = CVErr(xlErrRef) Then
'If (Application.IsError(Cells(2, i).Value)) Then
ThisWorkbook.Sheets("MGMT-Overview").Rows(iRow).EntireRow.Delete
i = i - 1
End If
Next i
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen mit #REF Error finden und löschen
13.12.2018 13:29:58
Nepumuk
Hallo Phil,
im Prinzip so:
Private Sub UpdateButton_Click()
    
    Dim iRow As Long
    Dim i As Long
    
    With ThisWorkbook.Worksheets("MGMT-Overview")
        
        iRow = .Cells(.Rows.Count, 12).End(xlUp).Row
        
        'Color in the important Content
        .Range("F4:H" & CStr(iRow)).Interior.Color = RGB(214, 220, 228)
        
        'Search for any false Values in Sheet
        For i = iRow To 4 Step -1
            
            If IsError(.Cells(2, i).Value) Then
                
                If .Cells(2, i).Value = CVErr(xlErrRef) Then
                    
                    .Rows(iRow).Delete
                    
                End If
            End If
        Next i
    End With
End Sub

Jetzt kommt ein Großes ABER: Irgendwas an deinem Code stimmt nicht, denn du ermittelst die Anzahl der Zeilen in einer Spalte, aber in der Schleife sprichst du die Zellen in Zeile 2 an.
Gruß
Nepumuk
Anzeige
AW: Zellen mit #REF Error finden und löschen
13.12.2018 13:43:42
PurePowerPhil
Hi Nepumuk,
Danke erstmal für die schnelle Antwort. Deine Schleifen Deklaration ist mir nicht geläufig.
Du lässt die Schleifen Variable von unten nach oben suchen, damit das i = i-1 entfällt oder?
Ja dein Aber ist berechtigt, aber ich habe die Beiden Werte nur vertauscht. Sprich es sollte eig. Cells(i,2) sein und nicht umgekehrt. Danke nochmals ich werde es gleich testen, mit der richtige Variante von Cells. Kannst du mir auch erklären warum mein Code nicht funktioniert hat?
Anzeige
AW: Zellen mit #REF Error finden und löschen
13.12.2018 13:50:45
PurePowerPhil
Also mein Code sieht jetzt so aus:
Private Sub UpdateButton_Click()
Dim iRow As Long
Dim i As Long
With ThisWorkbook.Worksheets("MGMT-Overview")
iRow = .Cells(.Rows.Count, 12).End(xlUp).Row
'Color in the important Content
.Range("F4:H" & CStr(iRow)).Interior.Color = RGB(214, 220, 228)
'Search for any false Values in Sheet
For i = iRow To 4 Step -1
If IsError(.Cells(i, 2).Value) Then
If .Cells(i, 2).Value = CVErr(xlErrRef) Then
.Rows(i).Delete
End If
End If
Next i
End With
End Sub

Anzeige
AW: Zellen mit #REF Error finden und löschen
13.12.2018 13:56:05
Nepumuk
Prima, genau richtig!!!
AW: Zellen mit #REF Error finden und löschen
13.12.2018 13:54:59
Nepumuk
Hallo Phil,
1. Ja, Schleifen die Zeilen löschen sollten immer von unten nach oben laufen. Ist einfach logischer.
2. Wenn die Zelle keinen Fehlerwert enthält dann läuft dein Vergleich in einen Fehler. Daher auch die vorgeschaltete Abfrage ob die Zelle überhaupt einen Fehler enthält. Ein Fehlerwert in einer Zelle ist ein Objekt, ein "normale" Zellinhalte eine Zahl oder ein Text und der Vergleich eines/einer Textes/Zahl mit einem Objekt klappt nun mal nicht.
Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen mit #REF Error in Excel finden und löschen


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und gehe zum entsprechenden Arbeitsblatt, in dem du die #REF Fehler finden möchtest.

  2. Erstelle einen Button, um den VBA-Code auszuführen. Gehe zu "Entwicklertools", wähle "Einfügen" und platziere einen Button auf deinem Arbeitsblatt.

  3. Füge den folgenden VBA-Code ein. Dieser Code sucht nach allen #REF Fehlern in der Spalte 2 und löscht die Zeilen, in denen diese Fehler auftreten:

    Private Sub UpdateButton_Click()
       Dim iRow As Long
       Dim i As Long
       With ThisWorkbook.Worksheets("MGMT-Overview")
           iRow = .Cells(.Rows.Count, 12).End(xlUp).Row
           'Färbe den wichtigen Inhalt
           .Range("F4:H" & CStr(iRow)).Interior.Color = RGB(214, 220, 228)
           'Suche nach fehlerhaften Werten im Blatt
           For i = iRow To 4 Step -1
               If IsError(.Cells(i, 2).Value) Then
                   If .Cells(i, 2).Value = CVErr(xlErrRef) Then
                       .Rows(i).Delete
                   End If
               End If
           Next i
       End With
    End Sub
  4. Teste den Button, um sicherzustellen, dass die Zeilen mit dem #REF Fehler erfolgreich gelöscht werden.


Häufige Fehler und Lösungen

  • Fehler: Run-time Fehler '13' Type mismatch
    Lösung: Überprüfe den Code, um sicherzustellen, dass du die richtige Zeile und Spalte ansprichst. Stelle sicher, dass die Schleife von unten nach oben läuft, um Probleme beim Löschen von Zeilen zu vermeiden.

  • Fehler: Es werden nicht alle #REF Fehler erkannt
    Lösung: Vergewissere dich, dass die Prüfung auf Fehler korrekt implementiert ist. Der Code sollte sicherstellen, dass nur Zellen mit dem #REF Error überprüft werden.


Alternative Methoden

Eine alternative Methode, um #REF Fehler in Excel zu finden, ist die Verwendung von Excel-Funktionen. Du kannst die Funktion =ISTFEHLER() verwenden, um zu überprüfen, ob ein Fehler vorliegt:

=ISTFEHLER(A1)

Diese Funktion gibt "WAHR" zurück, wenn in Zelle A1 ein Fehler vorliegt.


Praktische Beispiele

Angenommen, du hast ein Overview-Sheet, das Daten von verschiedenen anderen Sheets zusammenfasst. Wenn du eine Zeile in einem der anderen Sheets löschst, kann ein #REF! Fehler im Overview-Sheet entstehen.

Mit dem oben gezeigten VBA-Code kannst du diese Fehler automatisch entfernen, sodass dein Overview-Sheet immer aktuell und frei von #REF Fehlern bleibt.


Tipps für Profis

  • Nutze die IsError Funktion: Diese Funktion hilft dir, unerwartete Fehler zu vermeiden, indem sie sicherstellt, dass du nur mit Zellen arbeitest, die tatsächlich Fehler enthalten.

  • Die Schleifenrichtung beachten: Wenn du Zeilen löschst, solltest du immer von unten nach oben iterieren, um sicherzustellen, dass du beim Löschen von Zeilen keine Zeilen überspringst.


FAQ: Häufige Fragen

1. Was bedeutet der #REF Fehler in Excel?
Der #REF Fehler entsteht, wenn eine Formel auf eine Zelle verweist, die nicht mehr vorhanden ist. Dies passiert oft, wenn Zeilen oder Spalten gelöscht werden.

2. Wie kann ich #REF Fehler manuell finden?
Du kannst die "Fehlerüberprüfung" in Excel verwenden, um Zellen mit Fehlern zu identifizieren. Gehe zu "Formeln" > "Fehlerüberprüfung" und wähle "Fehler in der aktuellen Auswahl".

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der bereitgestellte VBA-Code sollte in allen modernen Excel-Versionen funktionieren, die die Verwendung von VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige