Anzeige
Archiv - Navigation
1920to1924
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
Zeile löschen VBA Code
06.03.2023 14:45:33
Gabriele
Hallo zusammen,
der liebe Gerd (DANKE :-)) hat mir schon folgenden Code erstellt:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 5 Then
If .CountLarge = 1 Then
If .Value = "x" Then
Application.EnableEvents = False
.EntireRow.Copy .EntireRow(2)
.EntireRow(2).ClearContents
Application.EnableEvents = True
End If
End If
End If
End With
End Sub
Das klappt super. Ich gebe in Spalte E ein "x" ein und darunter wird eine neue Zeile mit denselben Werten erstellt.
Kann mir jemand den Code so umschreiben, dass wenn das x wieder entfernt wird, die Zeile die sich darunter erstellt hat auch wieder gelöscht wird? Quasi den ganzen Befehl wieder retour?
Lieben Dank für die Hilfe
Gabriele

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen VBA Code
06.03.2023 15:18:00
Daniel
Hi
im prinzip so, man muss, bevor die Zelle geändert wird, schauen ob ein "x" drin stand oder nicht:
Option Explicit
Dim WarX As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Column = 5 Then
        If .CountLarge = 1 Then
            If .Value = "x" Then
                Application.EnableEvents = False
                .EntireRow.Copy .EntireRow(2)
                .EntireRow(2).ClearContents
                Application.EnableEvents = True
            ElseIf .Value = "" Then
                If WarX Then
                    Application.EnableEvents = False
                    Target.Offset(1, 0).EntireRow.Clear ' oder auch .delete, je nachdem ob die Zeile gleert oder gelöscht werden soll
                    Application.EnableEvents = False
                End If
            End If
        End If
    End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
    If .Column = 5 Then
        If .CountLarge = 1 Then
            If .Value = "x" Then
                WarX = True
            Else
                WarX = False
            End If
        End If
    End If
End With
End Sub
Gruß Daniel
Anzeige
AW: Zeile löschen VBA Code
06.03.2023 16:06:51
Gabriele
Hallo Daniel,
danke für den Code. Leider funktioniert er noch nicht ganz.
"Target.Offset(1, 0).EntireRow.Clear ' oder auch .delete, je nachdem ob die Zeile gleert oder gelöscht werden soll"
Wenn ich .clear durch .delete ersetze (und deinen Hinweis lösche) wird zwar nach setzen des "x" eine neue Zelle darunter generiert aber der Inhalt der davor drin war wird gelöscht statt eine neue leere Zelle einzufügen. Das hatte bei Gerd funktioniert.
Und wenn ich das "x" wieder lösche, wird die Zeile zwar gelöscht, aber es geht nur einmal...habe ich mehrere x in dem Tabellenblatt, dann funktioniert der Befehl leider nicht mehr.
Und scheinbar scheint es sich mit den Dropdown-Listen zu beissen, die ich in der Liste vewende. Kann das sein?
Danke für deine Mühe :-)
Grüße
Gabriele
Anzeige
AW: Zeile löschen VBA Code
06.03.2023 16:48:35
Daniel
Hi
bezüglich des einfügens des "x" muss mein Code genauso funktionieren wie der von Gerd, weil ich seien Code für diesen Fall übernommen habe.
Was DEIN Code macht, weiß ich nicht weil ich deinen Code nicht kenne.
von DropDowns weiß ich nichts.
Gruß Daniel
AW: Zeile löschen VBA Code
06.03.2023 18:13:27
GerdL
Hallo Gabriele,
teste mal.
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 5 Then
        If .CountLarge = 1 Then
        
        If .Value = "x" Then
            Application.EnableEvents = False
            .EntireRow.Copy .EntireRow(2)
            If Not .Comment Is Nothing Then
                .Comment.Delete
            End If
            .AddComment "x"
            .Comment.Visible = False
            .EntireRow(2).ClearContents
            Application.EnableEvents = True
        ElseIf .Value = Empty Then
            If Not .Comment Is Nothing Then
              Application.EnableEvents = False
              If .Comment.Text = "x" Then .ClearComments
              .EntireRow(2).Delete shift:=xlShiftUp
              Application.EnableEvents = True
            End If
        End If
         
        End If
        End If
    End With
End Sub
Gruß Gerd
Anzeige
AW: Zeile löschen VBA Code
08.03.2023 11:46:01
Gabriele
Danke Gerd.
Einmal neue Zeile und wieder Retour funktioniert tadellos. Aber die neue Zeile, löscht die Daten der darunterliegenden Zeile statt eine zusätzliche leere Zeile dazwischen einzufügen.
AW: Zeile löschen VBA Code
08.03.2023 14:44:09
GerdL
Hallo Gabriele,
statt
.EntireRow(2).Delete shift:=xlShiftUp
dann
.EntireRow(2).Clear
Oder ich habe dich nicht richtig verstanden?
Gruß Gerd

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige