Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
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
Inhaltsverzeichnis

Kleines VBA Code Problem

Kleines VBA Code Problem
26.11.2008 20:42:00
maxx_1985
Hi Leute
Beim Ausfuehren dieses Codes dauert es eine Ewigkeit bis Excel fertig ist. Und es ruckelt ebenso ne Ewigkeit. Wie kann man das anders loesen? hat jemand ne idee?
danke

Sub Step2()
'delete zeros
Dim i As Long
For i = Cells(Rows.Count, 9).End(xlUp).Row To 1 Step -1
If Cells(i, 9).Value > 0 Then
Cells(i, 9).EntireRow.delete
End If
Next i
End Sub


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kleines VBA Code Problem
26.11.2008 20:51:23
Gerd
Hi,

Sub Step2()
'delete zeros
Dim i As Long
Application.Screenupdating = False
For i = Cells(Rows.Count, 9).End(xlUp).Row To 1 Step -1
If Cells(i, 9).Value > 0 Then
Cells(i, 9).EntireRow.delete
End If
Next i
Application.Screenupdating = True
End Sub


mfg Gerd

AW: Kleines VBA Code Problem
26.11.2008 21:02:01
maxx_1985
hey gerd, danke! was ist dieses screenupdating genau? ;-)
gruss
denis
AW: Kleines VBA Code Problem
26.11.2008 21:12:00
Gerd
Hi,
das verhindert, dass der Bildschirm bei jeder Veränderung neu gezeichnet wird.
mfg gerd
danke, gerd!
26.11.2008 21:27:00
maxx_1985
mann, gerd! vielen dank dir!!! :-))
schoenen gruss
denis
Zeilen löschen mit Autofilter
26.11.2008 22:09:00
Beate
Hallo,
wesentlich schneller, da ohne Schleife, geht das Löschen sichtbarer Zeilen beim Einsatz des Autofilters. Dabei wird davon ausgegangen, dass Zeile 1 eine Überschrift enthält:
Sub Loeschen_mit_Autofilter()
    If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then Rows("1:1").AutoFilter
    Range("I1").AutoFilter
    Range("I1").AutoFilter Field:=1, Criteria1:=">0"
    Range("I2:I65536").SpecialCells(xlCellTypeVisible).EntireRow.Delete
    Rows("1:1").AutoFilter
End Sub


Erklärung:
Werte >0 sollen in Spalte I gelöscht werden.
Hier wird zunächst ein eventueller Autofilter gelöscht
Dann wird Autofilter in I1 eingebaut. Dieser Schritt, um sicherzustellen, dass Field = 1 ist.
Dann wird > 0 gefiltert und die sichtbaren Zeilen gelöscht
Am Ende Autofilter gelöscht.
An dieser Stelle könntest du einen eventuell vorher vorhandenen Autofilter wieder einbauen.
Gruß,
Beate
Anzeige
AW: Ergänzung
26.11.2008 22:28:00
Daniel
Hi
ich verstehs auch nicht, warum die Leut zum löschen immer Schleifen programmieren.
mit dem Autofilter bin ich ab ner bestimmten Zeilenzahl ja sogar ohne Makro schneller als die Schleife.
kleiner Hinweis noch, bei grösseren datenmengen empfiehlt es sich, vorher zu sortieren (bei mehr als 16.000 Zeilen auf jeden fall).
Das löschen schneller und bei zu grossen unsortieren Datenmengen kann Excell die Übersicht verlieren und es wird falsch gelöscht.
Gruß, Daniel
Zeilen löschen mit Autofilter 2
26.11.2008 22:32:13
Beate
Hallo,
sollte in Zeile 1 keine Überschrift stehen, kannst du diese so mitprüfen und eventuell löschen:
Sub Loeschen_mit_Autofilter()
    If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then Rows("1:1").AutoFilter
    Range("I1").AutoFilter Field:=1, Criteria1:=">0"
    Range("I2:I65536").SpecialCells(xlCellTypeVisible).EntireRow.Delete
    Rows("1:1").AutoFilter
    If Range("I1").Value > 0 Then Range("I1").EntireRow.Delete
End Sub

Gruß,
Beate
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige