• 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.

trage macrocode

Status
Niet open voor verdere reacties.

munstere

Gebruiker
Lid geworden
11 okt 2001
Berichten
31
Op de een of andere manier geeft onderstaande code
een enorm trage verwerking. Deze staat onder
een command button.
Iemand ideeen hoe dit kan? en of er mischien een snellere code bestaat die hetzelfde beoogt. Als er op commandbutton 3 geklikt wordt , is excel nu ongeveer 10 minuten bezig. Het bestand bestaat overigens wel uit 240 kolommen

Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
For kolom = 1 To 240
gekozen = False
For i = 0 To Me.ListBox2.ListCount - 1
If Cells(5, kolom).Value = Me.ListBox2.Column(0, i) Then
gekozen = True
End If
Next
If Not gekozen Then
Columns(kolom).Hidden = True
Else
Columns(kolom).Hidden = False
End If
Next
Unload Me
Range("a5").AutoFilter
Application.ScreenUpdating = True
End Sub
 
Ik heb helaas geen antwoord, maar wel zelf toevallig ook problemen met een langzame macro. Ik heb een 'lange' macro met oa de volgende functies achter elkaar:

- Cellen kopieren van een sheet naar een andere (ong. 2000rijen en 6kolommen)
- Twee kolommen toevoegen in de nieuwe sheet die elk de resultaat van twee verschillende berekeningen geven. Berekeningen die per rij worden uitgevoerd (dus ook 2000 maal) en in de berekening een iteratief proces bevatten.
- Filteren van de gehele data op vier criteria en kopieren gefilterde data
- Gemiddelde aan laten maken per wijziging van een kolom
- en nog enkele kleine functies

Als ik deze macro start dan duurt het erg lang. Lang, tot op het punt dat je haast denkt dat ie vastgelopen is. Nu is dat op zich geen probleem. Ik verwachtte dat de twee berekeningen over 2000 rijen en een iteratief proces waarschijnlijk de boosdoener zijn en erg veel tijd kosten. Echter als ik de macro in stappen uitvoer. Dan blijkt dat elk van de stappen, zelfs bovenstaande berekening, juist zeer snel klaar zijn. Hoe kan dit?
 
geen idee
maar deze code versnelt al enorm

Application.ScreenUpdating = False
....
..
.
.
.
.Application.ScreenUpdating = TRUE
 
Als er formules in het werkblad staan, zou ik onderstaande code boven en onder toevoegen, dan wordt er niet steeds opnieuw berekend:

Application.Calculation = xlManual
'rest macro....
Application.Calculation = xlAutomatic

Succes
John
 
Als ik het goed begrijp ga je voor elke kolom kijken of de waarde in rij 5 gelijk is aan een item in de lijst van je listbox.


Waarschijnlijk gaat het sneller als je eerst alle kolommen verbergt met Columns("A:IF").Hidden = True
en daarna in je loop alleen de kolommen zichtbaar maakt die je nodig hebt. Afhankelijk om hoeveel kolommen het gaat zou dit samen met het op handmatig zetten van je berekening aardig kunnen schelen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan