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

VBA-Aktuelle Zeile loeschen

Forumthread: VBA-Aktuelle Zeile loeschen

VBA-Aktuelle Zeile loeschen
27.10.2005 10:58:39
RainerS
Hallo zusammen ,
bastle gerade an einem Makro rum und möchte gerne die Zeile
in der sich der cursor gerade befindet löschen.
Hier mein code:
.
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then

ActiveCell.Offset(1, 4).Select
Selection.Cut
ActiveCell.Offset(-1, -1).Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Select
Hier soll der Befehl rein, der die Zeile löscht &lt---
Selection.End(xlToLeft).Select
ActiveCell.Offset(1, 0).Select

End If
ActiveCell.Offset(1, 0).Select

Loop
Hat jemand einen Tipp?
Vielen Dank im voraus für die Hilfe.
Gruß
RainerS

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA-Aktuelle Zeile loeschen
27.10.2005 11:15:50
Andi
Hi,
die Zeile kannst Du mit
Rows(Activecell.Row).Delete
löschen.
Ich kapier allerdings nicht so ganz, was Du überhaupt vorhast (vielleicht liegt das aber auch an mir...);
mit
Selection.End(xlToRight).Select
wählst Du die ganz rechte Zelle der aktuellen Spalte aus, und mit
ActiveCell.Offset(0, 1).Select
willst Du dann noch eins weiter nach rechts; das geht doch nicht.
Wenn Du mir kurz erläuterst, was Du vorhast, dann bekommen wir Deinen Code wahrscheinlich auch noch etwas übersichtlicher hin, ohne die ganze Selektiererei.
Schönen Gruß,
Andi
Anzeige
AW: VBA-Aktuelle Zeile loeschen
27.10.2005 12:19:51
RainerS
Hallo Andi,
vielen Dank für die schnelle Antwort.
Mir ist schon klar,daß mein code nicht toll aussieht aber ich glaube er funktioniert mittlerweile.
Ich hab eine Tabelle(Aus SAP-würg)in der in der Spalte A Teilenummern stehen und in Spalte E Texte dazu.
Nun soll , wenn die nächste Teilenummer die gleiche ist der Text in Spalte E eine Zeile nach oben daneben geschrieben werden , so daß immer nur eine Teilenummer vorhanden ist.
Hoffe ich habe mich klar genung ausgedrückt.
Wenn Du den code natürlich vereinfachen kannst bin ich dir dankbar.
Erklärung wäre nett(Damit ich was lerne)
Hier die Datei
https://www.herber.de/bbs/user/27888.xls
Gruß
RainerS
Anzeige
AW: VBA-Aktuelle Zeile loeschen
27.10.2005 15:34:56
Andi
Hi,
ich würde das so machen, is zwar nicht wesentlich kürzer, kommt aber ohne die ganzen selects aus, wodurch ein Code zumindest mal schnell, und meist auch übersichtlicher wird.
Ganz allgemein wäre noch anzumerken, dass Routinen, die Zeilen löschen sollen, immer von unten nach oben laufen müssen, weil sonst ggf Zeilen übersprungen und nicht gelöscht werden.

Sub loeschen()
Dim zeile As Integer
Application.ScreenUpdating = False      'Bildschirmaktualisierung aus, sonst flimmerts bei längeren Listen ne Weile
For zeile = Cells(65536, 1).End(xlUp).Row To 2 Step -1      'Zeilen löschen grundsätzlich immer von unten nach oben
If Cells(zeile, 1).Value = Cells(zeile - 1, 1).Value Then     'Wenn zwei gleiche Nummern in Spalte A
Range(Cells(zeile, 5), Cells(zeile, Cells.SpecialCells(xlCellTypeLastCell).Column)).Copy      'Kopiere in der aktuellen Zeile ab Spalte 5 (=Spalte E) bis zur letzten Spalte mit Inhalt
Range("F" & zeile - 1).PasteSpecial     'Füge eine Zeile weiter oben ab Spalte F ein
Rows(zeile).Delete      'Zeile löschen
End If
Next zeile
Application.ScreenUpdating = True     'Bildschirmaktualisierung wieder ein
End Sub

Schönen Gruß,
Andi
Anzeige
@Andi - Besten Dank - Gruß RainerS - eom
27.10.2005 16:30:39
RainerS
.
Gern geschehen... (ot)
27.10.2005 16:59:32
Andi
.
AW: VBA-Aktuelle Zeile loeschen
27.10.2005 11:18:38
Ralf
Hallo Rainer,
Spalte = activecell.row
Rows(spalte & ":" & spalte).delete
Ciao, Ralf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel mit VBA löschen


Schritt-für-Schritt-Anleitung

Um eine Zeile in Excel mit VBA zu löschen, kannst Du den folgenden Code verwenden. Dieser Code löscht die Zeile, in der sich der Cursor befindet:

Sub ZeileLoeschen()
    Rows(ActiveCell.Row).Delete
End Sub

Falls Du mehrere Zeilen basierend auf bestimmten Bedingungen löschen möchtest, kannst Du die folgende Methode nutzen:

Sub loeschen()
    Dim zeile As Integer
    Application.ScreenUpdating = False      ' Bildschirmaktualisierung aus
    For zeile = Cells(65536, 1).End(xlUp).Row To 2 Step -1
        If Cells(zeile, 1).Value = Cells(zeile - 1, 1).Value Then
            Range(Cells(zeile, 5), Cells(zeile, Cells.SpecialCells(xlCellTypeLastCell).Column)).Copy
            Range("F" & zeile - 1).PasteSpecial
            Rows(zeile).Delete
        End If
    Next zeile
    Application.ScreenUpdating = True
End Sub

Häufige Fehler und Lösungen

  1. Fehler: "Laufzeitfehler 1004 – Die Methode 'Delete' für das Objekt 'Rows' ist fehlgeschlagen."

    • Lösung: Stelle sicher, dass Du eine gültige Zeile löschst. Überprüfe, ob die ActiveCell tatsächlich in einem Bereich ist, der gelöscht werden kann.
  2. Fehler: "Zeilen werden nicht richtig gelöscht."

    • Lösung: Bei Schleifen zum Löschen von Zeilen ist es wichtig, von unten nach oben zu arbeiten, um zu verhindern, dass Zeilen übersprungen werden.

Alternative Methoden

Wenn Du keine VBA-Programmierung nutzen möchtest, kannst Du auch die Excel-Funktion „Zeile löschen“ über das Menü verwenden:

  1. Wähle die Zeile aus, die Du löschen möchtest.
  2. Rechtsklicke auf die Zeilennummer und wähle „Zeile löschen“ aus dem Kontextmenü.

Für eine schnelle Löschung kannst Du auch die Entf-Taste verwenden, nachdem Du die Zeile markiert hast.


Praktische Beispiele

Angenommen, Du hast eine Liste von Produkten mit doppelten Einträgen in Spalte A. Um die Zeilen mit doppelten Teilenummern zu löschen, kannst Du den oben angegebenen VBA-Code verwenden.

Wenn Du die Zeile löschen möchtest, in der der Cursor steht, führe einfach das folgende Makro aus:

Sub AktuelleZeileLoeschen()
    Rows(ActiveCell.Row).Delete
End Sub

Tipps für Profis

  • Vermeide die Verwendung von Select und Activate, um den Code effizienter und schneller zu gestalten.
  • Nutze Fehlerbehandlung, um unerwartete Fehler zu vermeiden, insbesondere wenn Du mit Löschoperationen arbeitest.
  • Testen: Teste Deinen VBA-Code immer in einer Kopie Deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen gleichzeitig löschen?
Du kannst eine Schleife verwenden, um die Zeilen basierend auf bestimmten Bedingungen zu löschen. Beispiel: Du kannst alle Zeilen mit doppelten Werten in einer bestimmten Spalte löschen.

2. Was ist der Unterschied zwischen Rows(ActiveCell.Row).Delete und ActiveCell.EntireRow.Delete?
Beide Methoden löschen die aktuelle Zeile. ActiveCell.EntireRow.Delete ist eine alternative Schreibweise, die oft verwendet wird, um die Absicht klarer zu machen.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die meisten grundlegenden VBA-Befehle, wie das Löschen von Zeilen, funktionieren in allen gängigen Excel-Versionen ab Excel 2003.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige