Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro zu langsam

Forumthread: Makro zu langsam

Makro zu langsam
31.07.2007 09:53:00
mephonad
Hallo,
ich habe ein Makro geschrieben der unter Excel 2003 (8) sec braucht. Aber unter Excel 2002 fast (15) min braucht.
weiß jemand woran kann es liegen.
vielen dank

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zu langsam
31.07.2007 10:00:00
Klaus
Hallo Mephonad,
das Problem liegt in Zeile 15 deines Makros, kommentiere die mal aus.
Gruß,
Klaus

AW: Makro zu langsam
31.07.2007 10:17:00
mephonad
Hallo,
wie kann ich dieser Code Abschnitt besser optimieren ?
For k = Sheets("Buchungen").UsedRange.Rows.Count To 10 Step -1
If (Sheets("Buchungen").Range("I" & k) = 0) Then
Sheets("Buchungen").Rows(k).EntireRow.Delete
End If
Next k
For g = Sheets("Buchungen").UsedRange.Rows.Count To 10 Step -1
If (Sheets("Buchungen").Range("C" & g) = 9021000000#) Then
Sheets("Buchungen").Rows(g).EntireRow.Delete
End If
Next g
Gruß
mephonad

Anzeige
AW: Makro zu langsam
31.07.2007 13:07:00
Rudi
Hallo,

Sub tt()
Dim rngTmp As Range, k As Long
With Sheets("Buchungen")
For k = .UsedRange.Rows.Count To 10 Step -1
If .Cells(k, 9) = 0 Or .Cells(k, 3) = 9021000000# Then
If rngTmp Is Nothing Then
Set rngTmp = .Cells(k, 1)
Else
Set rngTmp = Union(rngTmp, .Cells(k, 1))
End If
End If
Next k
End With
If Not rngTmp Is Nothing Then rngTmp.EntireRow.Delete
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Makro zu langsam
31.07.2007 15:20:59
mephonad
Ihr habt mir wirklich sehr geholfen und ich bin euch sehr dankbar
Kann man auf dieser Code Abschnitt optimieren?
anfang = 2
totalrows = Sheets("Daten").UsedRange.Rows.Count
For i = 1 To 4 '4 weil Jahre 2007 bis 2010 erzeugt werden sollen
h = 9
Application.ScreenUpdating = False
For l = Sheets("Buchungen").UsedRange.Rows.Count To 10 Step -1
Sheets("Buchungen").Rows(l).EntireRow.Delete
Next l
Sheets("Daten").Range("A" & anfang & ":A" & totalrows).Copy Sheets("Buchungen").Range("B10")
Sheets("Daten").Range("B" & anfang & ":B" & totalrows).Copy Sheets("Buchungen").Range("C10")
Sheets("Daten").Range("E" & anfang & ":E" & totalrows).Copy Sheets("Buchungen").Range("D10")
Sheets("Daten").Range("F" & anfang & ":F" & totalrows).Copy Sheets("Buchungen").Range("E10")
Sheets("Daten").Range("G" & anfang & ":G" & totalrows).Copy Sheets("Buchungen").Range("F10")
Sheets("Daten").Range("H" & anfang & ":H" & totalrows).Copy Sheets("Buchungen").Range("G10")
Sheets("Daten").Range("K" & anfang & ":K" & totalrows).Copy Sheets("Buchungen").Range("H10")

Anzeige
AW: Makro zu langsam
31.07.2007 22:34:37
Daniel
Hi
also mal ne kleine Verbesserung wäre, alles was direkt zusammenängt, auch zusammen zu kopieren:
Sheets("Daten").Range("A" & anfang & ":B" & totalrows).Copy Sheets("Buchungen").Range("B10")
Sheets("Daten").Range("E" & anfang & ":F" & totalrows).Copy Sheets("Buchungen").Range("D10")
Sheets("Daten").Range("G" & anfang & ":H" & totalrows).Copy Sheets("Buchungen").Range("F10")
Sheets("Daten").Range("K" & anfang & ":K" & totalrows).Copy Sheets("Buchungen").Range("H10")
damit fällt schon mal die Hälfte der Copy-Aktionen weg.
besser wärs natürlich man könnte die Zwischenzeilen mitkopieren, dann gings auf einmal, aber das wird wohl seine Gründe haben.
diese Schleife ist auch überflüssig:
For l = Sheets("Buchungen").UsedRange.Rows.Count To 10 Step -1
Sheets("Buchungen").Rows(l).EntireRow.Delete
Next l
wenn ichs richtig verstehe, soll alles gelöscht werden, bis auf ersten 9 Zeilen.
Das geht dann auch so:
Sheets("Buchungen").usedrange.offset(9,0).entirerow.delete
Gruß, Daniel

Anzeige
Application.Screenupdate
31.07.2007 10:59:00
sergiesam
Hi,
wenn du Zeilen löscht, benötigt die Grafik (Animation des Löschens) einiges an Zeit.
ich schlage vor, dass du kurzfristig die Bildschirmaktualisierung ausschaltest.
Application.screenupdate = false
...
Dein Code
...
Application.Screenudpate = True
Pass aber auf, dass dein Code ohne Absturz läuft, sonst siehst du kein Ergebnis. Bei Fehler, gib einfach im VBA-Direktfenster (STRG+G) wieder Application.Screenupdate = True [Enter] ein.
lg,
Sam

Anzeige
AW: Makro zu langsam
31.07.2007 11:14:00
ransi
HAllo
Versuche es mal so:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Option Explicit
Dim AppCalc
Dim AppScreen
Dim AppEvents
Dim AppCursor

Public Sub dein_code()
More_speed
'Dein Code
'.
'.
'.
Meine_Einstellungen
End Sub


Public Sub More_speed()
With Application
    AppCalc = .Calculation
    AppScreen = .ScreenUpdating
    AppEvents = .EnableEvents
    AppCursor = .Cursor
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
    .Cursor = xlDefault
End With
End Sub


Public Sub Meine_Einstellungen()
With Application
    .Calculation = AppCalc
    .ScreenUpdating = AppScreen
    .EnableEvents = AppEvents
    .Cursor = AppCursor
End With
End Sub

ransi
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige