Löschen von Zeilen, wo Spalte(A) leer ist

Gangsterneo

Mitglied
Hallo Leute,

ich versuche in einem vba Script alle Zeilen zu löschen, in der die Zelle(A) leer ist.
Das macht er auch. Aber er hängt sich danach in der Whileschleife auf.

Code:
Dim y As Integer

    y = 1

    While (y <= 999)

        With Tabelle1.Range(Tabelle1.Cells(1, 1), Tabelle1.Cells(999, 1))
            If (Range("A" & y).Value = "") Then Rows(y).Delete y = y + 1 Else y = y + 1
        End With
    Wend

Liebe Grüße,
Neo

Schon gut.. das Ding funktioniert. Dauert aber ne Weile!

ps: eine Zusatzfrage.. gibt es nen Trick wie ich rausfinde.. welches die letzte Zeile ist?
Muss ich die Zeilen bis zum bestimmten Punkt Counten oder gibts da ne Variable?
 
Zuletzt bearbeitet:
Moin,

versuch's mal so:
Code:
Option Explicit

Sub DelRowEmptyInCol1()
   Dim Ze As Integer
   Dim c
   Dim Start As Single, Ende As Single
   
   Tabelle1.Select
   Cells(1, 1).Select
   Application.ScreenUpdating = False
   Start = Timer
   ActiveCell.SpecialCells(xlLastCell).Select
   Ze = ActiveCell.Row
   Range(Cells(1, 1), Cells(Ze, 1)).Select
   
   For Each c In Selection
      If IsEmpty(c) Then c.EntireRow.Delete
   Next c
   Ende = Timer
   MsgBox (Ende - Start) & " Sekunden"
   Cells(1, 1).Select
   Application.ScreenUpdating = True
End Sub
Bei 20.000 Zeilen dauert das 16 Sekunden. Und mein Rechner ist nun wirklich nicht der allerschnellste. Ach ja, die roten Zeilen hattest du gesucht, und die grünen Zeilen kannst du rausnehmen, die sind nur für die Zeitanzeige da.

[EDIT] Ups, habe gerade festgestellt, dass dieses mein 100. Beitrag ist ... :) [/EDIT]
 
Grüezi zusammen

...das sollte aber doch noch schneller gehen, denke ich... ;-)


Code:
Sub DelRowEmptyInCol1()
Dim start As Double
    Application.ScreenUpdating = False
    start = Timer
    Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    MsgBox (Timer - start) & " Sekunden"
    Application.ScreenUpdating = True
End Sub


Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -
 
Wenn ich diesen code einfüge löscht er alles was in der tabelle ist.
was ziemlich doof ist.

ich möchte das alle leeren felder gelöscht werden und der rest zusammen gezogen wird (ran rückt).


wie mache ich das?
 
Grüezi Alpha

Der Code löscht, wie gewüsncht, alle Zeilen deren Spalte A leer ist.

In deinem Falle köntest Du ev. ganz einfach sortieren, dann stehen die leeren Zellen am Ende der Spalte.


--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -
 

Neue Beiträge

Zurück