VBA Performance Delete
30.12.2020 06:45:48
Rainer-Franz
ich muss mal wieder um Rat/Hilfe bitten, da ich etwas verunsichert bin. Aus Performance-Gründen habe ich alle .Select/Activate Anweisungen kürzlich verbannt, bzw. versuche komplett alles auf VBA Ebene zu verlagern.
So auch nachfolgenden Codeschnipsel (kleiner Auszug), der relativ schnell im Vergleich zu früheren Codes, Anfangs purer MakroaufnahmeCode, dann immer wieder etwas verbessert, nun so die gewünschten Daten löscht:
Dim WS15Mdel, lastrow15M
lastrow15M = WS15M.Cells(Rows.Count, 11).End(xlUp).Rows.Row
For WS15Mdel = lastrow15M To firstrow1 Step -1
If WS15M.Cells(WS15Mdel, 7).Value "1" Then
WS15M.Rows(WS15Mdel).Delete Shift:=xlUp
End If
Next WS15Mdel
Mir ist nicht klar, wie ich WS15Mdel (Range der zu löschenden Zeilen) genau auf die Tabelle definiere, dies kommt mir zu pauschal vor, konnte aber nichts dahingehend ergooogeln (verrücktes Wort, ergoogeln....). Ich liebe Wortfindungen, z.B. Klönen & Telefonieren = Klönflonat. :) Sorry für den Spaß am Rande...
Ich werde jedoch das Gefühl nicht los, hier was übersehen zu haben, oder lässt sich dies nicht mehr besser performen.
Über Vorschläge würde ich mich freuen.
Daneben noch meine Frage zu Meinungen in die Runde:
Vor einiger Zeit, ich finde den Artikel nicht mehr, habe ich gelesen, dass UDFs, alle CPU-Kerne bei Berechnung nutzen, hingegen VBA-Code nur einen Kern der CPU nutzt. Ist dies richtig, sollte man dann nicht seine Formeln zu UDFs konvertieren und dann diese in den VBA-Code als Funktion integrieren?
Für Antworten bin ich sehr dankbar und wünsche schon einmal für Alle einen guten Rutsch in ein besseres, gesundes 2021.
Also DANKE vorab und liebe Grüße
Rainer