1. #1
    Lt. Commander
    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    Excel 2010 Makro leere Zeilen löschen

    Hallo,

    ich möchte ein kleines Makro erstellen, welches die Spalte C überprüft, um die erste leere Zelle zu markieren und ab dieser Zelle alle Zeilen zu löschen.

    Ich habe diesen Code gefunden, um die erste freie Zelle zu markieren, nur wie lasse ich Excel dann alle Zeilen darunter löschen (Clear all contents reicht auch)?

    Code:
    Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Select 
    
    End Sub
    Danke im voraus!

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Lt. Junior Grade
    Dabei seit
    Jan 2011
    Ort
    Bruchsal
    Beiträge
    490

    AW: Excel 2010 Makro leere Zeilen löschen

    Bezieht sich allerdings wie in deinem Beispiel nur auf Spalte 2! Oder brauchst du es für alle Spalten?

    Code:
    Sub a()
    
        Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 2).Select
        Range( _
            Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 2), _
            Cells(Cells(Rows.Count, 2).End(xlDown).Row, 2) _
        ).ClearContents
        
    End Sub
    Ich mag Orthographie.

  4. #3
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Ich bräuchte es für alle Spalten... Den Code oben habe ich auch nur gegoogelt und verstehe ihn ehrlich gesagt nicht ganz.

  5. #4
    Commander
    Dabei seit
    Dez 2012
    Beiträge
    2.515

    AW: Excel 2010 Makro leere Zeilen löschen

    Sind unterhalb alle Zellen leer?

    Dann so:
    Code:
        Range("C1").End(xlDown).Offset(1, 0).Select
        Range(Selection, Selection.End(xlDown)).EntireRow.Delete

  6. #5
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Ja sind sie. Ich werde das morgen mal testen. Danke

    Ergänzung vom 19.09.2013 09:43 Uhr: So ich hab es nun getestet...

    es gibt leider zwei Probleme:

    1. Man muss das Makro zwei mal ausführen, damit es "funktioniert"

    2. irgendwie werden alle Zeilen darüber etwas verschoben. Das was vorher in Zeile 21 war ist nun z.B: in Zeile 19....

    Eine Idee?

  7. #6
    Commander
    Dabei seit
    Dez 2012
    Beiträge
    2.515

    AW: Excel 2010 Makro leere Zeilen löschen

    Lad die Tabelle am besten mal hier als Anhang hoch, dann kann man das leichter nachvollziehen; da kann viel falsch sein.

  8. #7
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Hier die Datei:

    Unbenannt 1.zip

    Alles unter dem letzten Eintrag in Spalte C soll raus (Inhalte löschen). Danke!
    Geändert von Furble (27.09.2013 um 09:33 Uhr)

  9. #8
    GMG-CC
    Gast

    AW: Excel 2010 Makro leere Zeilen löschen

    Moin,

    hier einmal mit "wirklich" löschen:
    Code:
    Option Explicit
    
    Sub RestLoeschen()   'By GMG-CC
       Dim lRowC As Long, lRowAll As Long
       Dim i As Long
       
       lRowC = Cells(Rows.Count, 3).End(xlUp).Row
       lRowAll = Cells.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
       
       For i = lRowAll To lRowC + 1 Step -1
          Rows(i).EntireRow.Delete
       Next i
    End Sub

  10. #9
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Hallo Günther,

    vielen Dank dafür! Das ist der erste Code, der bei mir tut was er soll

    Nur leider ist er mit einem sehr großen Rechenaufwand verbunden. Da das ganze bei mir nicht nur in einem Tabellenblatt, sondern in etwa zehn gemacht werden muss, dauert der ganze Prozess ziemlich lange. Auch Application.ScreenUpdating = False am Anfang schafft keine Abhilfe

    Wenn ich es Richtig verstanden habe, geht der Code alle Zeilen einzeln durch. Kann man es auch so machen, dass er schaut ab wann nichts mehr in Spalte C steht und dann unter diesem letzten Eintrag alle Zeilen auf einmal löscht?

    Ich wäre dir/euch sehr dankbar, wenn ihr dafür auch eine Lösung parat hättet.

  11. #10
    GMG-CC
    Gast

    AW: Excel 2010 Makro leere Zeilen löschen

    Moin,

    stimmt, in der For .. Next - Schleife wird wirtlich jede Zeile einzeln gelöscht. Be den (im Muster) wenigen Zeilen habe ich eher zu den Basics der Programmiererei gegriffen

    Und natürlich geht es "in einem Rutsch ..." Schau mal hier:
    Code:
    Option Explicit
    
    Sub RestLoeschen() 'By GMG-CC'
        Dim lRowC As Long, lRowAll As Long
        Dim i As Long
        
        On Error GoTo ErrorHandler
        With Application
          .ScreenUpdating = False
          .Calculation = xlCalculationManual
        End With
        
        lRowC = Cells(Rows.Count, 3).End(xlUp).Row
        lRowAll = Cells.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
        Range("A" & lRowC + 1 & ":A" & lRowAll).EntireRow.Delete
    ErrorHandler:
        With Application
          .ScreenUpdating = True
          .Calculation = xlCalculationAutomatic
          .Calculate
        End With
    End Sub
    Alternative wäre noch:
    STATT
    lRowAll = Cells.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
    Range("A" & lRowC + 1 & ":A" & lRowAll).EntireRow.Delete
    deklarierst du erst gar nicht die Variable lRowAll und ersetzt die beiden Zeilen mit
    Code:
            Range("A" & lRowC + 1 & ":A" & Rows.Count).EntireRow.Delete
    dann wird der komplette Rest nach unten bis zur allerletzten Zeile 65536 (bei Versionen ab 2007 > 1.000.000) gelöscht.

    Ich denke, das wird einiges an Geschwindigkeit bringen.

  12. #11
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Hey,

    super, das mit der Geschwindigkeit hat funktioniert! Nur ein letztes Problem gibt es noch: Durch das löschen der gesamten Zeile verschieben sich meine Formeln und funktionieren so leider nicht mehr.

    Ich wollte es also mit .ClearContents fixen, also so:

    Code:
    Range("A" & lRowC + 1 & ":A" & Rows.Count).ClearContents
    Leider löscht er dann gar nichts mehr.

    Eine weitere Hilfestellung wäre super!

    Vielen Dank!

  13. #12
    GMG-CC
    Gast

    AW: Excel 2010 Makro leere Zeilen löschen

    Moin,

    Durch das löschen der gesamten Zeile verschieben sich meine Formeln und funktionieren so leider nicht mehr.
    Das verstehe ich nicht. Wenn unterhalb der letzten Zeile in Spalte_C nichts mehr ist, dann gibt es doch auch nichts anzupassen …

    Lade noch einmal eine Tabelle hoch, wo das Problem sichtbar ist, Mit entsprechenden Kommentaren im Blatt.

  14. #13
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Hi,

    Das alte Problem konnte ich selbst lösen, eins gibt es jetzt noch: Das Makro löscht nicht unterhalb des letzten Eintrages in Spalte C alles, sondern einschließlich den letzten Eintrag. Kann das sein?

    Wie kann ich das fixen?

    Danke!

    Ergänzung vom 29.09.2013 15:02 Uhr: Ich habe deinen ersten Lösungsvorschlag angewendet, nicht den wo alles bis Zeile 65536 gelöscht wird.

    Ergänzung vom 29.09.2013 15:06 Uhr: okay, auch das konnte ich selbst durch folgenden Ausdruck lösen:

    alt:
    Code:
    Range("A" & lRowC + 1 & ":A" & lRowAll).EntireRow.Delete
    neu:
    Code:
    Range("A" & lRowC + 1 & ":A" & lRowAll + 1).EntireRow.Delete
    Müsste so stimmen, oder?

    Ergänzung vom 29.09.2013 15:08 Uhr: Letzte Frage :

    Kann ich in Dokument1 ein Makro mit Schaltfläche erstellen, welches alles Blätter aus Dokument1 in Dokument X (also mit variablen Namen), das auch geöffnet ist, kopiert?
    Geändert von Furble (29.09.2013 um 15:08 Uhr)

  15. #14
    GMG-CC
    Gast

    AW: Excel 2010 Makro leere Zeilen löschen

    Moin,

    Müsste so stimmen, oder?
    Ja. War ein Flüchtigkeitsfehler von mir.
    Letzte Frage :

    Kann ich in Dokument1 ein Makro mit Schaltfläche erstellen, welches alles Blätter aus Dokument1 in Dokument X (also mit variablen Namen), das auch geöffnet ist, kopiert?
    Hmmm, worüber unterhalten wir uns? 1 Arbeitsmappe (Datei) mit n Tabellenblättern?
    Mehrere geöffnete Mappen mit n Tabellenblättern?
    Noch eine andere Konstellation?

  16. #15
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Dokument1 hat zwei Blätter mit immer denselben Namen (sagen wir Tabelle1 und Tabelle2). Dokument x hat einen variablen Namen und unterschiedlich viele Blätter mit unterschiedlichen Namen.

    Die beiden Blätter aus Dokument1 sollen einfach an den Anfang von Dokument x kopiert werden. Dokument x ist gleichzeitig geöffnet.

    Danke

  17. #16
    GMG-CC
    Gast

    AW: Excel 2010 Makro leere Zeilen löschen

    Ah ja …

    das ist aber eine ganz andere Baustelle. Zwar die gleiche Datei. Und auch wohl nicht so schwer. Aber ich muss nun etwas Geld verdienen. Da lasse ich nun mal andere ran .
    Mein Tipp: So richtig schlau werde ich aus deiner Beschreibung immer noch nicht, vielleicht ein detaillierteres Beispiel …

  18. #17
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Alles klar, vielen Dank soweit! Ohne deine Hilfe wäre ich verloren gewesen!

    Mein Problem werde ich später nochmal detailierter beschreiben.

    Hättest du vielleicht noch einen Tipp wo ich mir solide Grundkenntnisse zu Excel Makros aneignen kann? Alles was ich bisher "programmiert" habe, habe ich über den Makro-Recorder gelöst order mir ergooglet..

    Liebe Grüße!

  19. #18
    Commander
    Dabei seit
    Feb 2008
    Ort
    Südwesten
    Beiträge
    2.198

    AW: Excel 2010 Makro leere Zeilen löschen

    Wie genau willst du bestimmen, in welche Mappe reinkopiert werden soll? Sagst du einfach, es sind grundsätzlich nur zwei offen und du willst in die andere kopieren? Du könntest auch ein Auswahlfenster öffnen lassen, in welche Mappe kopiert werden soll. Wäre wahrscheinlich sauberer, wenn auch ein Klick mehr beim Ausführen.
    Zitat Zitat von G.Threepwood Beitrag anzeigen
    Es muss eine vollisolierte Flachstahlkrimpzange mit selbstauslösender Rasterzahnstellung und integrierter One-Touch-Trigger-Funktion sein! Sonst geht GAR NIX!!!!

  20. #19
    GMG-CC
    Gast

    AW: Excel 2010 Makro leere Zeilen löschen

    Moin,

    aufzeichnen ist schon mal gut. Allerdings musst du da reichlich nachbearbeiten, wenn der Code einigermaßen "sauber" sein soll. Und wenn es nicht zu viel Code ist, einfach hier mal einstellen und um "verschlanken" bitten. Da lernst du dann so einiges.

    Dann natürlich Fachliteratur. Die Bücher von Microsoft Press sind IMHO sehr gut, M&T ist auch gut lesbar. Deine Stadtbücherei kann dir die Bücher auch zur Ausleihe besorgen.

    Und wenn du im Job bist, kann es vielleicht sein, dass du Bildungsurlaub bekommst (hängt vom Bundesland ab) und deine Volkshochschule solch ein Seminar anbietet.

    Und wenn dein Chef es möchte, kann er jemanden organisieren, der fas (gegen Honorar) macht. Das ist bei kleinen Gruppen und gezielter Problemlage am effizientesten.

  21. #20
    Lt. Commander
    Ersteller dieses Themas

    Dabei seit
    Jan 2008
    Ort
    Erde
    Beiträge
    1.962

    AW: Excel 2010 Makro leere Zeilen löschen

    Zitat Zitat von simpsonsfan Beitrag anzeigen
    Wie genau willst du bestimmen, in welche Mappe reinkopiert werden soll? Sagst du einfach, es sind grundsätzlich nur zwei offen und du willst in die andere kopieren? Du könntest auch ein Auswahlfenster öffnen lassen, in welche Mappe kopiert werden soll. Wäre wahrscheinlich sauberer, wenn auch ein Klick mehr beim Ausführen.
    Wäre mir beides Recht, wobei wie du schon meintest letztere Möglichkeit "sauberer" wäre. Würde mich über einen Code freuen

    @Günther: Danke für die vielen Tipps! Ich werde die eine oder andere Sache ausprobieren

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
Forum-Layout: Feste Breite / Flexible Breite