Anzeige
Archiv - Navigation
1040to1044
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeile löschen, die #Bezug Fehler aufweist

Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 20:59:46
Joachim
Frage schon mal gestellt, leider war keine Lösung dabei.
Folgender Code fordert zum benennen eines Blattnamen aus, welches dann gelöscht wird. Die Bezüge zum Blatt "Listen" sind somit weg.
jetzt wird man aufgefordert, die fehlerhafte Zeile selbst zu markieren und zu löschen.
Es muss doch möglich sein, dass alle Zeilen aus dem Blatt "Listen" per VBA gelöscht werden und nach oben verschoben wird.
Kann es jemand umschreiben? Der unprotect Teil könnte auch raus bleiben, wäre egal.
Danke Jo.

Public Sub Mitarbeiter_löschen()
Dim TabName As String
TabName = InputBox("Geben Sie den zu löschenden Blattnamen ein:", "Mitarbeiter löschen")
Index2 = 0: For Index = 5 To Worksheets.Count - 2
If Worksheets(Index).Name = TabName Then Index2 = 1
Next
If Index2 = 0 Then TabName = MsgBox("Blattname nicht vorhanden", vbCritical + vbOKOnly):  _
Exit Sub
Application.ScreenUpdating = False: ThisWorkbook.Unprotect Password:=Kennwort
Worksheets(TabName).Unprotect Kennwort: Worksheets(TabName).Delete
Worksheets("Listen").Activate
Index2 = MsgBox("Löschen Sie die Zeile mit den Bezugsfehlern !", vbExclamation + vbOKOnly)
End Sub


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:05:58
Tino
Hallo,
diese Zeile löscht alle Zeilen auf der Tabelle "Listen"
die in einer Zelle einen Fehler in der Formel aufweisen.
Sheets("Listen").Cells.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
Gruß Tino
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:15:00
Joachim
VBA Niete am Werk (ich) bekomme den Code nicht umgeschrieben.
Kannst du weiter helfen?
Vielen Dank
Jo.
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:26:00
Tino
Hallo,
teste mal
Public Sub Mitarbeiter_löschen()
Dim TabName As String
TabName = InputBox("Geben Sie den zu löschenden Blattnamen ein:", "Mitarbeiter löschen")

Index2 = 0
For Index = 5 To Worksheets.Count - 2
   If Worksheets(Index).Name = TabName Then Index2 = 1
Next

If Index2 = 0 Then
 TabName = MsgBox("Blattname nicht vorhanden", vbCritical + vbOKOnly)
 Exit Sub
End If

With Application
 .ScreenUpdating = False
 .DisplayAlerts = False
    
    ThisWorkbook.Unprotect Password:=Kennwort
    Worksheets(TabName).Delete
    Worksheets("Listen").Activate
    Sheets("Listen").Cells.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
 
 .ScreenUpdating = True
 .DisplayAlerts = True
End With
End Sub


Gruß Tino

Anzeige
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:17:45
Josef
Hallo Joachim,
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub Mitarbeiter_löschen()
    Dim strSheet As String
    Dim rng As Range, rngErr As Range, rngU As Range
    
    On Error GoTo ErrExit
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With
    
    strSheet = InputBox("Geben Sie den zu löschenden Blattnamen ein:", _
        "Mitarbeiter löschen")
    
    If strSheet = "" Then GoTo ErrExit
    
    If SheetExist(strSheet) Then
        Sheets(strSheet).Delete
        On Error Resume Next
        Set rngErr = Worksheets("Listen").UsedRange.SpecialCells( _
            xlCellTypeFormulas, 16)
        
        On Error GoTo ErrExit
        
        If Not rngErr Is Nothing Then
            For Each rng In rngErr
                If rng.Value = CVErr(xlErrRef) Then
                    If rngU Is Nothing Then
                        Set rngU = rng.EntireRow
                    Else
                        Set rngU = Union(rngU, rng.EntireRow)
                    End If
                End If
            Next
        End If
        
        If Not rngU Is Nothing Then rngU.Delete
    Else
        MsgBox "Blattname nicht vorhanden", vbInformation + vbOKOnly
    End If
    
    ErrExit:
    
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

Private Function SheetExist(ByVal sheetName As String, Optional WbName As String) As Boolean
    Dim wks As Worksheet
    On Error GoTo ERRORHANDLER
    If WbName = "" Then WbName = ThisWorkbook.Name
    For Each wks In Workbooks(WbName).Worksheets
        If wks.Name = sheetName Then SheetExist = True: Exit Function
    Next
    ERRORHANDLER:
    SheetExist = False
End Function

Gruß Sepp

Anzeige
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:24:00
Joachim
Perfekte!!!
Das hätte ich nieeeeee b bhinbekommen. Danke vielmals
Jo.
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:27:00
Joachim
Beim zweiten durchlaufen der Schleifen werden viele andere Zeilen aus "Listen" gelöscht.
?
Ist da noch was machbar?
Jo.
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:35:00
Josef
Hallo Joachim,
also ich kann den Code so oft laufen lassen wie ich will, bei mir werden nur Zeilen mit #Bezug-Fehlern gelöscht.
Gruß Sepp

AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:39:00
Joachim
Tja, bei mir ist es so, dass der zweite Durchlauf diverse andere Zeilen löscht.
Keine Ahnnung woran es liegt, werde weiter ein bisschen rumprobieren.
Danke dir.
Jo.
Anzeige
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:41:22
Tino
Hallo,
sehr wahrscheinlich wird durch das löschen der Zeilen andere Bezugsfehler erzeugt.
Gruß Tino
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:44:57
Joachim
Zumindest kann ich nach dem löschen nur eines MA keine anderen -bezugsfehler- erkennen.
Jo.
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 21:52:00
Tino
Hallo,
wen Du auf Deiner Tabelle bist, gehe ins VBA und gebe im Direktfenster
diese Zeile ein und drückte die Entertaste
Sheets("Listen").Cells.SpecialCells(xlCellTypeFormulas, 16).select
In der Tabelle sind die Zellen markiert.
Gruß Tino
AW: Zeile löschen, die #Bezug Fehler aufweist
19.01.2009 22:51:10
Gerd
Hallo Jo,
ersetze mal versuchsweise diese Codezeile:
If rng.Value = CVErr(xlErrRef) Then
durch diese:
If Left(rng.Formula, 6) = "=#REF!" Then
Vielleicht kannst dann noch weitere Bezugsfehler erkennen.
Gruß Gerd
Anzeige
Es geht!! Zeile löschen, #Bezug Fehler aufweist
20.01.2009 12:41:18
Joachim
Klasse, mit der Änderung der Zeile
If rng.Value = CVErr(xlErrRef) Then
auf
If Left(rng.Formula, 6) = "=#REF!" Then
funktioniert es wunderbar.
HerzlichenDank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige