Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
624to628
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
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro langsam

Makro langsam
16.06.2005 07:40:02
Gisela
Hallo,
ich habe ein Problem mit dem folgenden Makro. Es läuft langsam. Bei mehrmaligem starten wird es immer langsamer.
So weit wie ich das herausbekommen habe, laufen "doppeltezeilenlöschen" und "Zeilenlöschen" sehr langsam.
Da meine Kenntnisse nur auf der Recorderarbeit beruhen, steh ich hier ziemlich ratlos rum. Die Makros hab ich mir aus der Recherche heraus gesucht.

Sub Aktionsübernahme2()
Application.ScreenUpdating = False
Sheets("Aktionen").Select
ActiveSheet.Unprotect ("mix1877")
Range("E4:G204").Select
Selection.Copy
'erste leere Zelle in A Daten copy
Sheets("cpo").Select
Range("A1").Select
ActiveCell.End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B:B").Select
Selection.ColumnWidth = 30.86
Columns("A:A").Select
Selection.ColumnWidth = 11.86
'Daten sortieren
Range("A6:AQ" & Cells(65536, 1).End(xlUp).Row).Sort Key1:=Range("B6"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Call doppeltezeilenlöschen
Call ZeilenLöschen
Range("A6").Select
End Sub


Sub doppeltezeilenlöschen()
'Doppelte löschen wenn in B
Dim lLRow As Long, lRow As Long
lLRow = Cells(Rows.Count, 2).End(xlUp).Row
For lRow = lLRow To 1 Step -1
If WorksheetFunction.CountIf _
(Columns(2), Cells(lRow, 2).Value) > 1 Then
Rows(lRow).Delete
End If
Next lRow
End Sub


Sub ZeilenLöschen()
'in 205 Zeilen werden gelöscht, wenn in B kein Eintrag
Dim i As Long
For i = 205 To 1 Step -1
If Cells(i, 2) = "" Then Rows(i).Delete
Next i
End Sub

Kann mir bitte jemand helfen, wie ich das Makro entsprechend verändern muß.
Vielen Dank und Grüße
Gisela

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro langsam
16.06.2005 08:00:33
Hajo_Zi
Hallo Gisela,
ich habe jetzt die Datei nicht nachgebaut, darum Live

Option Explicit
Sub Aktionsübernahme2()
Application.ScreenUpdating = False
ActiveSheet.Unprotect ("mix1877")
Sheets("Aktionen").Range("E4:G204").Copy
'erste leere Zelle in A Daten copy
With Sheets("cpo")
With .Range("A1").End(xlDown).Offset(1, 0)
.PasteSpecial Paste:=xlPasteValues
End With
.Columns("B:B").ColumnWidth = 30.86
.Columns("A:A").ColumnWidth = 11.86
'Daten sortieren
.Range("A6:AQ" & .Cells(65536, 1).End(xlUp).Row).Sort Key1:=.Range("B6"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End With
Call doppeltezeilenlöschen
End Sub
Sub doppeltezeilenlöschen()
'Doppelte löschen wenn in B
Dim lLRow As Long, lRow As Long
With Sheets("cpo")
lLRow = .Cells(Rows.Count, 2).End(xlUp).Row
For lRow = lLRow To 1 Step -1
If WorksheetFunction.CountIf(.Columns(2), .Cells(lRow, 2).Value) > 1 Then
.Rows(lRow).Delete
End If
If lRow <= 205 Then
If .Cells(lRow, 2) = "" Then .Rows(lRow).Delete
End If
Next lRow
End With
End Sub

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem Windows 2000 SP4 und Excel Version 2000 SP3.


Anzeige
AW: Makro langsam
16.06.2005 08:36:04
Gisela
Hallo Hajo,
vielen Dank, dass Du mir mal wieder aus der Patsche hilfst.
Kannst Du vielleicht nochmal drüber schaun. Bei Deiner Hilfe werden die Zeilen ... 205 Zeieln.....nicht gelöscht, wenn in B kein Eintrag. Ansonsten läufts schon super.
Grüße
Gisela
AW: Makro langsam
16.06.2005 08:42:37
Hajo_Zi
Hallo Gisela,
ich hatte schon geschrieb das ich die Datei nicht nachbaue.
folgender Fehler ist mir nur aufgefallen.

If WorksheetFunction.CountIf(.Columns(2), .Cells(lRow, 2).Value) > 1 Then
.Rows(lRow).Delete
ElseIf lRow <= 205 Then
If .Cells(lRow, 2) = "" Then .Rows(lRow).Delete
End If

Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Makro langsam
16.06.2005 09:44:09
Gisela
Hallo Hajo,
vielen Dank für die weitere Hilfe.
Aber leider tut beim zeilenlöschen bis 205 nichts.
Grüße
Gisela
AW: Makro langsam
16.06.2005 10:06:42
Hajo_Zi
Hallo Gisela,
ich hatte es schon zweimal geschrieben, das ich die Datei nicht nachbaue. Daran hat sich nicht geändert.

Option Explicit
Sub Aktionsübernahme2()
Dim LoLetzte As Long
Dim lRow As Long
Application.ScreenUpdating = False
With Sheets("Aktionen")
.Unprotect ("mix1877")
.Range("E4:G204").Copy
End With
'erste leere Zelle in A Daten copy
With Sheets("cpo") '
LoLetzte = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536) + 1
With .Cells(LoLetzte, 1)
.PasteSpecial Paste:=xlPasteValues
End With
.Columns("B:B").ColumnWidth = 30.86
.Columns("A:A").ColumnWidth = 11.86
'Daten sortieren
.Range("A6:AQ" & .Cells(65536, 1).End(xlUp).Row).Sort Key1:=.Range("B6"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
For lRow = .Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(.Columns(2), .Cells(lRow, 2).Value) > 1 Then
.Rows(lRow).Delete
ElseIf lRow <= 205 Then
If .Cells(lRow, 2) = "" Then .Rows(lRow).Delete
End If
Next lRow
End With
Sheets("Aktionen").Protect ("mix1877")
Application.ScreenUpdating = True
End Sub

Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Makro langsam
16.06.2005 10:19:30
Gisela
Hallo Hajo,
vielen Dank für Deine Mühe. Ich habe das schon richtig verstanden, dass Du die Datei nicht nachbauen möchtest. Sollte in dieser Richtung auch keinerlei Kritik sein. Ich bin ja froh, wenn mir geholfen wird.
Ich dachte, vielleicht etwas naiv, dass man das so sehen kann, warum "zeilenLöschen" nicht läuft.
Reagiert an dieser Stelle leider immer noch nicht.
Vielleicht gibts ja noch von irgendjemandem einen Hinweis.
Vielen Dank und Grüße
Gisela
AW: Makro langsam
16.06.2005 10:25:52
Hajo_Zi
Hallo Gisela,
bei mir werden alle Zeilen gelöscht ab Zeile 205 die in Spalte B keinen Wert haben. Also muß es wohl an Deiner Datei liegen.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Makro langsam
16.06.2005 11:10:40
Gisela
Hallo Hajo,
es ist ganz lieb, das Du Dir noch mal Zeit genommen hast.
Vielleicht gibts aber auch ein Mißverstandnis.
Ich habe mal eine Musterdatei hochgeladen.
Wenn in Spalte B kein Eintrag, soll die Zeile gelöscht werden. Die höchstmögliche Zeilenanzahl ist 205.
Vielleicht kannst Du mal auf die Musterdatei einen Blick werfen?
https://www.herber.de/bbs/user/23911.xls
Viele Grüße und herzlichen Dank
Gisela
AW: Makro langsam
16.06.2005 11:16:02
Hajo_Zi
Hallo Gisela,
vor dem löschen wird die Zeilenanzahl laut Spalte B festgestellt. In Spalte B stehen zu dem Zeitpunkt nur Werte bis Zeile 20. Zeile 1 bis 20 ist gefüllt darum wird keine gelöscht.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Makro langsam
16.06.2005 11:46:36
Gisela
Hallo Hajo,
erstmal vielen Dank für Deine Antwort.Aber irgendwie verzweifele ich.
In der Mustertabelle stehen in Spalte A, Merkmal, Merkmal1, Merkmal2,2,2 usw.
In Spalte B stehen bis B12 u.a.schöne, Sommer, Winter.
Es sollen alle Zeilen unterhalb von Winter gelöscht werden, wenn zwar in A ein Eintrag, hier z.B. die 2, aber in B kein Eintrag. So dass als Ergebnis unterhalb von "Winter" eine leere Zeile steht.
Danke schön und Grüße
Gisela
AW: Makro langsam
16.06.2005 11:51:00
Hajo_Zi
Hallo Gisela,
die letzte Zeile nicht laut Spalte B feststellen sondern laut Spalte A.
For lRow = .Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
ändern in
For lRow = .Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
Anzeige
AW: Makro langsam
16.06.2005 12:05:06
Gisela
Hallo Hajo,
vielen Dank für die aufwendige Hilfe. Funktioniert jetzt.
Grüße und eine schöne Zeit
Gisela

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige