Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
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


Halli Hallo,
ich bin ziemlicher Neuling in VBA. Daher würde ich euch bitten mir bei meiner Fragestellung zu helfen und zwar wie folgt: Ich möchte aus einer Tabelle aller Zellen kopieren, bis der Wert einer Zelle 0 annimmt. Diesen bestimten Bereich möchte ich in einer neuen Datei abspeichern...
Anzeige

Hallo
zum Feierabend noch mal fix ne Frage
ich möchte in einem anderen sheet, in einer anderen Tabelle etwas suchen und danach 4 Zellen nach links gehen und den Wert kopieren...
Dim strActiveCell As String
Dim rFound As Range
Tabellenname = ActiveSheet.Name
Tabellenname...

Hallo Excel-Gemeinde!
ich habe eine mehrblättrige Datei, per Makro kopiere ich ein Blatt und speichere dieses unter neuem Namen ab.
Dieses Blatt soll aber nicht mehr den VBA-Code der ursprübglichen Datei enthalten, sprich ein Blatt ohne Makros.
Wer kann mir helfen?
So sieht der...
Anzeige

Hallo,
obwohl ich schon viel mit Excel gemacht habe, tauchen doch immer wieder Fragen auf:
Gibt es eine Möglichkeit, in einer Zelle einen Zeilenumbruch manuell einzufügen, ohne dass man bereits am Zellenende ist?
Ich denke, dass ist eine eher dumme Frage, aber ich habe derzeit keine...

Hallo,
ich bräuchte bitte eure Hilfe.
Hab folgende Formel...
Selection.FormulaArray = _
=IF(ROW(R[-107]C[-3])>COUNTA('1'!R5C[4]:R200C[4]),"""",INDEX('1'!R5C4:R200C4,SMALL(IF('1'!R5C[4]:R200C[4]<>"""",ROW(R1:R196),""""),ROW(R[-107]C[-3]))))"
Mein Problem ist, dass ic...

Hallo,
mir ist bekannt, wie ich per VBA ein neues Modul anlegen und eine Sub erzeugen kann.
Ich möchte nun aber per VBA eine sub in "Diese Arbeitsmappe" erzeugen und mit einer zweiten Prozedur wieder löschen.
Geht das?
Ich habe im Archiv nichts relevantes hierzu gefunden.
V...
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige