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

Zeile löschen, selbe Zeile in anderem Blatt lösche

Forumthread: Zeile löschen, selbe Zeile in anderem Blatt lösche

Zeile löschen, selbe Zeile in anderem Blatt lösche
23.10.2007 15:56:44
Peter
Hallo alle zusammen,
mit folgendem Code lösche ich (unter anderem) die markierte Zeile (z.B. Zeile 8) im aktiven Tabellenblatt "Cashflow".
Funktioniert wunderbar.
Außerdem soll mit dem Code auch die selbe Zeile, also in diesem Fall Zeile 8 im Tabellenblatt "MwSt" gelöscht werden.
Das funktioniert mit meinem Code soweit, dass Zeile 8 auch im Tabellenblatt "MwSt" gelöscht wird aber außerdem auch noch die nächste Zeile, also Zeile 9.
Es werden also die selbe Zeile wie die markierte Zeile und die nächste Zeile gelöscht, gelöscht werden soll aber nur die selbe Zeile wie die markierte Zeile.
Kann mir bitte jemand helfen?!
mein Code:

Private Sub Zeile_loeschen_Click()
Dim cell As Range, lngAb As Long, lngAnz As Long
SpeedUp True
ActiveSheet.Unprotect Password:="Peter"
If ActiveCell.Row  7 Then
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile loeschen?", vbOKCancel + vbQuestion, _
"Achtung!") = 1 Then
ActiveCell.EntireRow.Delete
lngAb = ActiveCell.Row
lngAnz = Cells(65536, 1).End(xlUp).Row - lngAb + 2
For Each cell In Rows(lngAb - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy
cell.Offset(1, 0).Resize(lngAnz, 1).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Next cell
End If
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
Else
MsgBox "Sie können diese Zeile nicht loeschen!"
End If
ActiveSheet.Protect Password:="Peter"
Worksheets("MwSt").Activate
ActiveSheet.Unprotect Password:="Peter"
'selbe Zeile aktivieren wie in Worksheet "Cashflow"
Worksheets("MwSt").Rows(ActiveCell.Row).Delete
ActiveCell.EntireRow.Delete
lngAb = ActiveCell.Row
lngAnz = Cells(65536, 1).End(xlUp).Row - lngAb + 2
For Each cell In Rows(lngAb - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy
cell.Offset(1, 0).Resize(lngAnz, 1).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Next cell
ActiveSheet.Protect Password:="Peter"
Worksheets("Cashflow").Activate
SpeedUp False
End Sub


Danke im Voraus
Grüße aus Berlin

Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
23.10.2007 16:45:41
Mag
Hi,
na, dann lösche doch nicht 2 Zeilen!
Dein Code:
Worksheets("MwSt").Rows(ActiveCell.Row).Delete
ActiveCell.EntireRow.Delete
Gruss

AW: Zeile löschen, selbe Zeile in anderem Blatt lö
23.10.2007 17:22:00
Peter
Hallo Mag,
du hast schon recht, ein Befehl sollte reichen.
Mit jeweils einem dieser Befehle funktionierts immer noch nicht.
Dann wird immer nur die nächste Zeile also in dem Fall nicht Zeile 8 wie in Cashflow sondern Zeile 9 in MwSt gelöscht.
Wie ist der richtige Code?
Danke
Grüße aus Berlin

Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
23.10.2007 18:28:06
Mag
?

Sub Test()
'im Arbeitsblatt Cashflow z.B. Zeile 8 löschen
ActiveCell.EntireRow.Delete
'selbe Zeile wie in Worksheet "Cashflow" auch im Arbeitsblatt MwSt löschen
Worksheets("MwSt").Rows(ActiveCell.Row).Delete
End Sub


so funktioniert es doch ...

Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 11:08:08
Peter
Hallo Mag,
ich stelle mal meine Datei als Zip rein.
Ich habe den Code auch noch ein bischen umgebaut und jetzt kommt die Fehlermeldung "Zellen nicht gefunden" für das Blatt "MwSt".
Zur Funktion der Datei:
Auf dem Blatt "Cashflow" befindet sich eine Menüleiste mit der Schaltfläche "loeschen".
Nur diese zum löschen von Zeilen verwenden.
Vor dem löschen muss natürlich eine Zeile markiert werden, am besten eine mitten drin!
Der Code befindet sich in Modul 2 an letzter Stelle.
meine Datei: https://www.herber.de/bbs/user/47047.zip
Danke im Voraus
Grüße aus Berlin

Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 11:55:10
Mag
Hallo,
wenn Du vor dem löschen im aktiven Worksheet "Cashflow" hingehst und mit:
Worksheets("MwSt").Activate
das Worksheet "MwSt" aktiv setzt, dann stimmt ja "ActiveCell.Row" vom Worksheet "Cashflow" nicht mehr!!!
Du befindest Dich in einem Modul. Dann solltest Du auch klare Bezüge zu den Worksheets verwenden; also immer den Bezug zum entsprechenden Worksheet verwenden oder die Zeile in eine Variable sichern und dann auf das andere Worksheet anwenden.
Gruss

Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 13:24:57
Peter
Hallo Mag,
im Prinzip verstehe ich dich, meine Kenntnisse sind aber nicht ausreichend um das was du mir sagst umzusetzen. Kannst du bitte meinen Code korregieren?!
Danke
Grüße aus Berlin

AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 14:06:00
Mag

Private Sub Zeile_loeschen_Click()
Dim cell As Range, lngAb As Long, lngAnz As Long
SpeedUp True
ActiveSheet.Unprotect Password:="Peter"
If ActiveCell.Row  7 Then
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile loeschen?", vbOKCancel + vbQuestion, _
"Achtung!") = 1 Then
ActiveCell.EntireRow.Delete
lngAb = ActiveCell.Row
lngAnz = Cells(65536, 1).End(xlUp).Row - lngAb + 2
For Each cell In Rows(lngAb - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy
cell.Offset(1, 0).Resize(lngAnz, 1).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Next cell
End If
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
Else
MsgBox "Sie können diese Zeile nicht loeschen!"
End If
ActiveSheet.Protect Password:="Peter"
Worksheets("MwSt").Activate
ActiveSheet.Unprotect Password:="Peter"
'selbe Zeile aktivieren wie in Worksheet "Cashflow"
Worksheets("MwSt").Rows(lngAb).Delete
'lngAb = ActiveCell.Row
lngAnz = Cells(65536, 1).End(xlUp).Row - lngAb + 2
For Each cell In Rows(lngAb - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy
cell.Offset(1, 0).Resize(lngAnz, 1).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Next cell
ActiveSheet.Protect Password:="Peter"
Worksheets("Cashflow").Activate
SpeedUp False
End Sub


Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 14:11:28
Mag
... oder:

Private Sub Zeile_loeschen_Click()
Dim cell As Range, lngAb As Long, lngAnz As Long
SpeedUp True
ActiveSheet.Unprotect Password:="Peter"
If ActiveCell.Row  7 Then
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile loeschen?", vbOKCancel + vbQuestion, _
"Achtung!") = 1 Then
ActiveCell.EntireRow.Delete
lngAb = ActiveCell.Row
lngAnz = Cells(65536, 1).End(xlUp).Row - lngAb + 2
For Each cell In Rows(lngAb - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy
cell.Offset(1, 0).Resize(lngAnz, 1).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Next cell
End If
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
Else
MsgBox "Sie können diese Zeile nicht loeschen!"
End If
ActiveSheet.Protect Password:="Peter"
Worksheets("MwSt").Activate
ActiveSheet.Unprotect Password:="Peter"
'selbe Zeile aktivieren wie in Worksheet "Cashflow"
ActiveSheet.Rows(lngAb).Delete
'lngAb = ActiveCell.Row
lngAnz = Cells(65536, 1).End(xlUp).Row - lngAb + 2
For Each cell In Rows(lngAb - 1).SpecialCells(xlCellTypeFormulas, 23)
cell.Copy
cell.Offset(1, 0).Resize(lngAnz, 1).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Next cell
ActiveSheet.Protect Password:="Peter"
Worksheets("Cashflow").Activate
SpeedUp False
End Sub


Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 15:10:00
Peter
Hallo Mag,
funktioniert so weit, eine Sache noch, wenn man keine Zeile markiert hat und dann die MsgBox kommt in der man mit OK bestätigt bleibt der Code an der Stelle:
Worksheets("MwSt").Rows(lngAb).Delete
hängen.
Kannst du dir das noch mal ansehen?!
Danke
Gruß

Anzeige
AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 16:17:00
Mag
... naja, hier sollte dann auch nicht im sheet "MwSt" gelöscht werden, oder? Also nach der Meldung z.B.:
exit sub

AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 16:26:00
Mag
... vorher Protect nicht vergessen, dann exit sub

AW: Zeile löschen, selbe Zeile in anderem Blatt lö
24.10.2007 17:19:11
Peter
Super, danke Mag
Anzeige
Anzeige

Infobox / Tutorial

Zeile löschen in Excel: So klappt's auch im zweiten Blatt


Schritt-für-Schritt-Anleitung

Um eine Zeile in Excel zu löschen und zugleich die gleiche Zeile in einem anderen Blatt zu entfernen, kannst du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass nur die markierte Zeile gelöscht wird, sowohl im aktiven Blatt ("Cashflow") als auch im anderen Blatt ("MwSt").

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu oder bearbeite ein bestehendes Modul.
  3. Kopiere den folgenden Code in das Modul:
Private Sub Zeile_loeschen_Click()
    Dim cell As Range, lngAb As Long, lngAnz As Long
    SpeedUp True
    ActiveSheet.Unprotect Password:="Peter"

    If ActiveCell.Row >= 7 Then
        If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
            If MsgBox("Wollen Sie diese Zeile loeschen?", vbOKCancel + vbQuestion, "Achtung!") = 1 Then
                lngAb = ActiveCell.Row
                ActiveCell.EntireRow.Delete

                ' Lösche die selbe Zeile im Blatt "MwSt"
                Worksheets("MwSt").Rows(lngAb).Delete
            End If
        Else
            MsgBox "Sie haben keine Zeile markiert!"
        End If
    Else
        MsgBox "Sie können diese Zeile nicht loeschen!"
    End If

    ActiveSheet.Protect Password:="Peter"
    SpeedUp False
End Sub
  1. Schließe den VBA-Editor und teste die Funktion, indem du eine Zeile im Blatt "Cashflow" markierst und auf die Schaltfläche "loeschen" klickst.

Häufige Fehler und Lösungen

  • Fehler: "Zellen nicht gefunden"

    • Lösung: Stelle sicher, dass das Arbeitsblatt "MwSt" existiert und korrekt benannt ist. Überprüfe auch, ob die Zeilenangabe beim Löschen korrekt ist.
  • Fehler: Falsche Zeile wird gelöscht

    • Lösung: Achte darauf, dass die Variable lngAb vor dem Löschen der Zeile gespeichert wird, um sicherzustellen, dass die korrekte Zeile im anderen Blatt gelöscht wird.
  • Fehler: Code bleibt hängen

    • Lösung: Füge eine Exit Sub-Anweisung nach der Meldung "Sie haben keine Zeile markiert!" hinzu, um zu verhindern, dass der Code weiter ausgeführt wird.

Alternative Methoden

Eine alternative Methode zur Zeilenlöschung kann über Excel-Formeln oder die Verwendung von Makros ohne VBA erfolgen. Diese Methoden sind jedoch meist weniger flexibel und erfordern manuelle Eingriffe.


Praktische Beispiele

  • Beispiel 1: Lösche die Zeile 8 im Blatt "Cashflow", und die Zeile 8 im Blatt "MwSt" wird ebenfalls gelöscht.
  • Beispiel 2: Wenn eine Zeile in "Cashflow" gelöscht wird, können alle Formate und Formeln in der folgenden Zeile automatisch angepasst werden.

Tipps für Profis

  • Verwende die Application.ScreenUpdating und Application.Calculation Eigenschaften, um die Ausführungsgeschwindigkeit deiner VBA-Makros zu erhöhen.
  • Um die Benutzerfreundlichkeit zu verbessern, kannst du weitere MsgBoxen hinzufügen, die den Nutzer über den Fortschritt informieren.
  • Denke daran, die Blätter nach der Ausführung des Makros wieder zu schützen, um unerwünschte Änderungen zu verhindern.

FAQ: Häufige Fragen

1. Frage: Kann ich den Code in Excel 2016 oder älter verwenden?
Ja, der Code funktioniert in Excel 2016 sowie in älteren Versionen.

2. Frage: Was passiert, wenn ich versehentlich die falsche Zeile lösche?
Es gibt keine Undo-Funktion im VBA-Code. Stelle sicher, dass du die richtige Zeile markierst, bevor du auf "loeschen" klickst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige