Anzeige
Archiv - Navigation
412to416
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
412to416
412to416
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Beschleunigen des makros

Beschleunigen des makros
Lucas
hallo
möchte gerne mein macro etwas beschleunigen wie mach ich dies.
habe diesbezüglich den code gepostet villeicht kann mir jemand helfen ?
denn ca. bei 1000 datensätze dauert dies ziemlich
Gruss
Lucas

Sub Makro1()
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta = LastCell.Row
A = LastCell.Row
Do While Application.CountA(Rows(A)) = 0 And A <> 1
A = A - 1
Loop
lzeile = A
For t1% = 1 To lzeile
If Range("a" & t1%) = "summe" And Range("o" & t1%) > 50 Or Range("a" & t1%) = "summe" And Range("q" & t1%) > 0 = "summe" And Range("o" & t1%) < -50 Then
st$ = Range("a" & t1% - 1)
Rows("" & t1% & ":" & t1%).Select
Selection.Delete Shift:=xlUp
lzeile = lzeile - 1
For et% = lzeile To 1 Step -1
If Range("a" & et%) = st$ Then
Rows("" & et% & ":" & et%).Select
Selection.Delete Shift:=xlUp
leile = lzeile - 1
End If
Next et%
End If
Next t1%
Range("a1").Select
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Beschleunigen des makros
Ramses
Hallo
Da sind ein paar Unklarheiten die ich nicht ganz verstehe, .. unabhängig von der etwas eigenartigen Variablendeklaration ;-)
1. Warum die häufigen Variablenwechsel für ein und das gleiche Ziel
Set LastCell = ActiveSheet.Cells.SpecialCells(xlLastCell)
alta = LastCell.Row
A = LastCell.Row
Warum nicht einfach:
A = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
1. Was willst du damit denn erreichen ?
Do While Application.CountA(Rows(A)) = 0 And A 1
A = A - 1
Loop
2. Was willst du mit dieser prüfung denn testen ?
"...And Range("q" & t1%) &gt 0 = "summe"..."
Was soll denn nun in der Zelle "Q"&t1% stehen?
Eine Zahl grösser 0 oder "Summe" ?
Grundsätzlich kann auf Select verzichtet werden:
Anstelle von:
Rows("" & t1% & ":" & t1%).Select
Selection.Delete Shift:=xlUp
kannst du schreiben
Rows("" & t1% & ":" & t1%).Delete Shift:=xlUp
Gruss Rainer
Anzeige
AW: Beschleunigen des makros
Lucas
hallo rainer,
durch die select anweisung löschte das makro nur die zeilen bis zur nächsten summen zeile. durch das entnehmen der select anweisung werden die summen anweisung gelöscht und die den nächst höheren zeile zusammengetan.
habe den tipp so gemacht wie du es mir geshrieben hattest.
habe ich eine bitte an dich. Wie kann ich
das makro dazu zwingen das er alle kriterien auf einmal prüfen soll und nicht nach jedem button click. denn bis er diese unten angegebene anweisung erledigt muss ich 3 mal auf den button clicken
If Range("a" & t1%) = "summe" And Range("o" & t1%) &gt 50 Or Range("a" & t1%) = "summe" And Range("q" & t1%) &gt 0 = "summe" And Range("o" & t1%) &lt -50 Then
gruss
Lucas
Anzeige
AW: Beschleunigen des makros
Lucas
Hi Ramses,
wahrscheinlich habe ich mich etwas undeutug asugedrückt,
in der spalte a sind laufende zahlen fast in jeder 3. spalte ist aber das wort summe drin
da steht das ergebnis der überstellte zeilen.
Z.B
1
2
3
summe 1:3
4
5
summe 4:5
das makro soll erst die zeile mitdem wort summe finden dann, die spalte o kontrollieren ob dieses wert größer 50 oder kleiner -50 ist dann die spalte q konttrollieren ob die zahl größer als 0 ist wenn eins der kriterien zutreffen soll er die zeilen bis zu der nächsten zeilem mit dem wort summe löschen.
wie ich sehe hatte ich mich bei der ersten code posting mit vertan
Anzeige
AW: Beschleunigen des makros
Ramses
Hallo
... und nun ?
Hast du das Makro mal ausprobiert mit den Änderungen die ich dir geschrieben habe ?
Gruss Rainer
AW: Beschleunigen des makros Ramses
Lucas
Hallo rainer,
ja habe ich ausprobiert
A = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
das war super .
leider konnte ich dies
'Rows("" & t1% & ":" & t1%).Delete Shift:=xlUp
nicht benutzen denn er löscht nicht nur die zeilen sondern es mischt es die zeilen summe müssten immer bleiben.
eine frage an dich
ist denn dieze Zerile richtig
mit dem festlegen des kriteriums
hier habe ich 3 kriterien eingesetzt jedoch löscht er erst nach dem ersten kriteriu nach den zweioten betätigung des button sucht es nach dem zweiten und dann erst nach dem dritten. könnte man es eigentlich auch so machen das er mit einnmal nach allen drei kriterein sucht und löscht.
Gruss
Lucas
Anzeige
AW: Beschleunigen des makros Ramses
Ramses
Hallo
Was meinst du mit:
"...denn er löscht nicht nur die zeilen sondern es mischt es die zeilen summe müssten immer bleiben...."
Das hast du doch vorher auch gemacht,... ich habe bloss die Select-Anweisung rausgenommen.
Gruss Rainer
AW: Beschleunigen des makros Ramses
14.04.2004 00:23:35
Lucas
hallo reiner,
die select anweisung war schon richtig den es löscht die zeilen bis zur nächsten zeile summe.
habe dein tipp so befolgt wie du es mir gesagt hast aber dann löscht selectiert er nicht merh und löscht die summen zeilen und mischt die daten mit anderen.
habe eine bitte an dich
bei den unten angebenen code stimmt was net denn ich muss auf den button damit das macro startet dreimal klicken damit das makro nach allen drei krieterien sucht und löscht
kannst du mir sagen wo mein fehler ist
If Range("a" & t1%) = "summe" And Range("o" & t1%) &gt 50 Or Range("a" & t1%) = "summe" And Range("q" & t1%) &gt 0 = "summe" And Range("o" & t1%) &lt -50 Then
Gruss
Lucas
Anzeige
AW: code falsch ?
Lucas
hallo,
habe ein code in dem ich nach bestimmten krieterien abfrage das makro soll nach alle drei kriterien suchen und dann die entsprechende zeilen löschen.
es klappt alles bis aus die kriterien cih muss nach beendigung des erstes laufes des makros nochmal zweimal starten bis er alle entsprechende zeilen gelöscht hat.
könnt Ihr mir sagen wo mein fehler ist
If Range("a" & t1%) = "summe" And Range("o" & t1%) &gt 50 Or Range("a" & t1%) = "summe" And Range("q" & t1%) &gt 0 = "summe" And Range("o" & t1%) &lt -50 Then
gruss
Lucas
Code richtig,... aber
Ramses
Hallo Lucas
Das ist ein logisches Problem
Du löscht in deiner Schleife Zeile x mit der Variablennummer aus der Schleife
Was passiert ?
Die Zeile z.b. 2 wird gelöscht, die ehemalige Zeile 3 rutscht nach oben !!! und hat nun die Nummer 2, dein Schleifenzähler prüft nun mit der Nummer 3 die vorherige Zeile 4 !!!.
Deshalb haut das nicht hin :-))
Lass die Schleife von hinten nach vorne laufen,... dann haut das schon hin.
For t1% = lzeile to 1 Step - 1
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige