vba Excel plakken speciaal van waarden gaat zeer traag

Status
Niet open voor verdere reacties.

remember

Gebruiker
Lid geworden
26 jul 2014
Berichten
21
Beste specialisten,
In een grotere macro worden overbodige rijen verwijderd. Sommige formules die verwijzen naar andere rijen zouden daardoor verkeerde resultaten opleveren.
Daarom en om het bestand te verkleinen voor de eindgebruiker, worden de formules met plakken speciaal omgezet naar waarden voordat de rijen waar die formules naar verwijzen worden verwijderd.
Dit gebeurt met onderstaande code in bestanden met ca 5000 rijen en een 45-tal gebruikte kolommen waarvan een 30-tal met formules.
Het plakken speciaal duurt vaak 5 minuten ondanks het afzetten van calculation, screenupdate, enzovoort.

Ter info: de variabele LastRow wordt ook gebruikt in alle ranges van alle formules.

Iemand enig idee hoe dit sneller kan?
Waarvoor dank.

Code:
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .EnableEvents = False
    End With

        Range("E1", Cells(LastRow, "AO")).Copy
        Range("E1").PasteSpecial xlValues
        Application.CutCopyMode = False
        Range("A1").Select
                
    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
        .DisplayStatusBar = False
        .EnableEvents = True
    End With

mvg

Paul
 
what if ?

Code:
with cells(1,5).resize(LastRow, 37)
   .value=.value
end with
 
Beste,

Dank voor de snelle reactie.
De lijn " .value = .value " genereert een "fout 1004 tijdens de uitvoering: door de toepassing of door een object gedefinieerde fout."

Bij nader onderzoek blijkt een stuk van het bestand wel goed te zijn vervangen. VBA struikelt over cel met een formule die verwijst naar een andere cel met allemaal gelijkheidstekens in (=========).
De basis voor dit bestand komt namelijk van een geïmporteerd txt-bestand dat afgeleverd wordt door een ander softwarepakket.

We gaan in een eerste stap trachten die gelijkheidstekens te vervangen door een ander teken.
Misschien is dit ook de oorzaak van de traagheid bij het plakken speciaal.

Alleszins nogmaals dank voor de tip. Na het vervangen van de gelijkheidstekens in het geïmporteerde txt-bestand, gaan we wel nog eens testen welk systeem het snelst is.

mvg
Paul
 
Beste,

Ondertussen de 2 systemen uitgetest.
". value = . Value" voor de vervanging van formules door waarden blijkt net even snel (of traag) als het gebruik van "plakken speciaal xl values".
Doordat met de eerste methode strings waarin gelijkheidstekens staan als scheidingslijnen (het is een geïmporteerd txt-bestand van vreemde software), eerst moeten vervangen worden door bijvoorbeeld puntjes, heeft de eerste methode een heel klein beetje meer tijd nodig.

Ik vrees dat gewoon de hoeveelheid formules die moeten vervangen worden de oorzaak is en daar is spijtig genoeg niets aan te doen.

Toch bedankt om even mee te denken.

mvg

Paul
 
Je kunt het bestand ook opslaan als CSV bestand, afsluiten en dan weer openen in Excel.
Het niet belasten van het klembord moet toch echt sneller werken dan de copy / pastespecial methode.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan