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

Makro, das Zeile löscht wenn bestimmter Inhalt

Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 17:08:03
neu321
Hallo zusammen,
habe folgendes Problem:
Ich habe derzeit ein Makro, dass eine Zeile löscht, wenn in einer Zelle in Spalte B das Wort "closed" steht. Ich möchte das Makro erweitern, in dem es die Zeile löscht wenn das Wort "closed" oder "stopped" drinsteht. Wie ist das möglich?
Außerdem ist es momentan so, dass ich das Makro immer nur mit "Ausführen" starten kann. Ich würde das Makro aber gerne automatisch laufen lassen, d.h. ohne etwas drücken zu müssen...Könnt ihr mir hier weiterhelfen?
Hier noch meine Beispielsdatei: https://www.herber.de/bbs/user/117690.xlsm
Vielen Dank und viele Grüße!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 17:26:04
Nepumuk
Hallo,
in das Modul der Tabelle:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngRow As Long
    If Not Intersect(Target, Columns(2)) Is Nothing Then
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
        End With
        For lngRow = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
            With Cells(lngRow, 2)
                If .Value = "closed" Or .Value = "stopped" Then Rows(lngRow).Delete
            End With
        Next lngRow
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 17:37:34
neu321
Hi Nepumuk,
vielen Dank das klappt super! Ich habe das ganze jetzt dem Reiter Project_and_activity_list zugeordnet. Jetzt hätte ich aber noch eine Frage: Im Reiter Hours soll etwas ähnliches stattfinden und zwar wenn ein Bezugsfehler in Spalte B auftaucht...Dafür habe ich auch schon einen Code gefunden, allerdings funktioniert dieser nicht...siehe hier: https://www.herber.de/bbs/user/117691.xlsm
Könntest du mir da nochmals helfen?
Viele Grüße
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 17:47:36
Nepumuk
Hallo,
teste mal:
Option Explicit

Private Sub Worksheet_Calculate()
    Dim r As Range, c As Range
    Dim rDel As Range
    
    On Error Resume Next
    Set r = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
    On Error GoTo 0
    
    If Not r Is Nothing Then
        For Each c In r.Cells
            If c.Value = CVErr(xlErrRef) Then Set rDel = range_union(rDel, c.EntireRow)
        Next c
        If Not rDel Is Nothing Then
            Application.Calculation = xlCalculationManual
            rDel.Delete (xlShiftUp)
            Application.Calculation = xlCalculationAutomatic
            Set rDel = Nothing
        End If
        Set r = Nothing
    End If
End Sub

Private Function range_union(ByRef rDel As Range, ByRef rNeu As Range) As Range
    If rDel Is Nothing Then
        Set range_union = rNeu
    Else
        Set range_union = Union(rDel, rNeu)
    End If
End Function

Gruß
Nepumuk
Anzeige
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 17:54:38
neu321
Hi Nepumuk,
ich habs ausprobiert und wenn ich in dem Tab Project_and activity_list closed bzw. stopped eingebe in die Spalte B, dann erscheint ein Bezugsfehler im Tab Hours und dieser wird leider nicht gelöscht...Könntest du dir das nochmal ansschauen?
Das wäre super nett!!
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 17:59:25
Nepumuk
Hallo,
dann darfst du in dem Makro der Tabelle Project_and activity_list die automatische Berechnung nicht abschalten.
Gruß
Nepumuk
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 18:01:31
neu321
Danke für deine Antwort! Was meinst du damit genau?
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 18:05:22
Nepumuk
Hallo,
das war natürlich Unsinn denn die Berechnung ist gar nicht abgeschaltet. Teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngRow As Long
    If Not Intersect(Target, Columns(2)) Is Nothing Then
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
        End With
        For lngRow = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
            With Cells(lngRow, 2)
                If .Value = "closed" Or .Value = "stopped" Then Rows(lngRow).Delete
            End With
        Next lngRow
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
        End With
        Application.CalculateFullRebuild
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 19:04:24
arek
Hi Nepumuk,
danke nochmals für deine Antwort! Ich habe jetzt deine Codes übernommen (siehe https://www.herber.de/bbs/user/117693.xlsm), doch leider sind die Bezugsfehler immer noch vorhanden und die Zeile löscht sich nicht automatisch...Könntest du dir das nochmals anschaeun bitte?
Viele Grüße
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 19:20:35
Nepumuk
Hallo,
mein Fehler, da wurden Fehler in der aktiven Tabelle gesucht und nicht in der Tabelle Hours.
Ersetze diese Zeile:
Set r = ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
durch diese:
Set r = UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
Gruß
Nepumuk
Anzeige
AW: Makro, das Zeile löscht wenn bestimmter Inhalt
15.11.2017 20:58:27
arek
Super vielen Dank!!!!

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige