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

Makro viel zu langsam

Forumthread: Makro viel zu langsam

Makro viel zu langsam
20.01.2014 17:51:19
Dorfer
Hallo miteinander,
evtl, kann mir hier jemand weiterhelfen.
Ich habe ein Makro geschrieben, dass zwar korrekte ergebnisse liefert, aber unglaublich lange dafür braucht.
Wenn ich es komplett durchlaufen lasse > 15 min oder Excel macht nicht mehr mit...
hier der Code:
Sub Menge_pro_Ausstattung()
Dim a As String
Dim i, S, last_RT, last_Aus, Z As Integer
last_RT = Cells(2, Columns.Count).End(xlToLeft).Column
last_Aus = Sheets("Komplettdatei mit D.").Cells(9, Columns.Count).End(xlToLeft).Column
Range(Cells(24, 2), Cells(164, last_RT)).Select
Selection.Clear
For Z = 24 To 164
For S = 2 To last_RT
a = Cells(9, S)
For i = 2 To last_Aus
If Not IsEmpty(Sheets("Komplettdatei mit D.").Cells(Z, i)) Then
If Sheets("Komplettdatei mit D.").Cells(9, i).Text = a Then
Cells(Z, S).Value = Cells(Z, S).Value + Sheets("Komplettdatei mit D.").Cells(Z, i).Value
Else
End If
End If
Next i
Next S
Next Z
End Sub
Es wäre nett wenn sich das einer der Profis hier durchlesen könnte und ggf. einen Tipp hätte wie das schneller läuft.
Danke im Voraus
Florian

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro viel zu langsam
20.01.2014 18:06:23
Martin
Hallo Florian,
ich habe dein Makro auch inhaltich ein wenig verändert. Teste mal bitte:
Sub Menge_pro_Ausstattung()
Dim a As String
Dim i As Integer, S As Integer, last_RT As Integer, last_Aus As Integer, Z As Integer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With Sheets("Komplettdatei mit D.")
last_RT = .Cells(2, .Columns.Count).End(xlToLeft).Column
last_Aus = .Cells(9, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(24, 2), .Cells(164, last_RT)).Clear
For Z = 24 To 164
For S = 2 To last_RT
a = .Cells(9, S)
For i = 2 To last_Aus
If Not IsEmpty(.Cells(Z, i)) Then
If .Cells(9, i).Text = a Then
.Cells(Z, S).Value = .Cells(Z, S).Value + .Cells(Z, i).Value
End If
End If
Next i
Next S
Next Z
End With
With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = False
End With
End Sub
Ich hoffe, dass alles klappt!
Viele Grüße
Martin
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