• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Rijen verwijderen kost zeer veel tijd

Status
Niet open voor verdere reacties.

Joost.van.Steeg

Gebruiker
Lid geworden
9 okt 2006
Berichten
138
Ik probeer een aantal rijen te verwijderen.
Ik heb het met code geprobeerd en gewoon in Excel (rechtermuisknop verwijderen).
Beide methoden zijn zeer traag.

Het gaat om ongeveer 30000 rijen die een bepaalde layout hebben (met onder andere samengevoegde cellen). Ik wil deze rijen weer zonder bepaalde layout hebben. De eerste 100 rijen mogen niet verwijderd worden.

Het verwijderen van ca 10 rijen kost ca 10 seconden.
Het verwijderen van ca 1000 rijen enkele minuten

De code die ik als laatst heb geprobeerd is:
Code:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Rows("20000:21000").Delete Shift:=xlUp
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
 
Bovenstaande code zou toch redelijk snel moeten gaan hoor, het is een aansluitend bereik, en in 1 keer dat je die verwijderoperatie doet. Niet lijn per lijn.

Is het misschien een optie om wat moet blijven, te kopiëren naar een nieuw blad?
 
Ja, daar zat ik ook al aan te denken. Maar ben bang dat verwijzingen dan niet meer kloppen, zowel op sheet als in de code. Maar dat kan ik natuurlijk uitzoeken, kost alleen iets meer tijd dan rijen verwijderen (mits dit op normale snelheid gebeurd.)

Iig bedankt voor je reactie.
 
Bovenstaande code zou toch redelijk snel moeten gaan hoor, het is een aansluitend bereik, en in 1 keer dat je die verwijderoperatie doet. Niet lijn per lijn.

Zou denk ik er ook over. Vind het eigenlijk raar dat die heel traag is, zeker als er in die sub niets anders wordt uitgevoerd. Misschien doe je via VBA op voorhand veel geheugenintensieve taken, en komt dat geheugen niet dadelijk vrij (bv. veel set instructies die niet vrijgegeven worden.) Maar op zich lijkt me dit een snelle methode.

Maar ook de hint van Wigi om evt. te copieren lijkt me nog niet zo slecht.
 
Je zou nog kunnen proberen om alle events even uit te zetten:
Code:
Application.EnableEvents = False

En daarna natuurlijk wel weer aan zetten...;)
 
hee,

Dat is het! Gaat nu weer net zo snel als normaal.
Betekent dit zoiets als dat ik voor elke regel die ik verwijder een achtergrond actie laat draaien, en nu niet meer? En dat er misschien ergens een fout in mijn werkboek zit ?
 
Kijk eens alle code na die je hebt, vooral dan in de modules van de bladen. Wellicht is een Worksheet_Change macro aan het werk? Die zet je dus uit met de code die etri gaf :thumb:
 
Dank jullie wel. Ik zal de code nog eens doorlopen. Worksheet_change gebruik ik verder niet. Het zit hem wel in die sheet. Het verwijderen van de rijen (100 t/m 36000) heeft ook niet de uitwerking dat mijn scrollbalk rechts maar tot bijvoorbeeld regel 100 beperkt blijft. De laatste regel blijft de (ca) 36000ste. Alsof er nog rijen gevuld zijn. Dus ik ga toch maar over tot het kopieren.

Nogmaals dank, ik zal hem op opgelost zetten.
 
Druk eens Ctrl-End en verwijder tussenliggende rijen. (Je kan met Shift en Ctrl handig de rijen selecteren).

Sla dan bestand op. Dan zou de laatste cel goed moeten staan en het bestand veel kleiner zijn in omvang.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan