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

Speed up

Status
Niet open voor verdere reacties.

sjonnie1974

Gebruiker
Lid geworden
19 okt 2011
Berichten
177
Hoi,

Een gedeelte uit een macro hieronder.
In een sheet staat middels een formule een H in kolom A.
Deze staat er wel of niet, maar die ter zijde.

Een macro kijkt of er een H in kolom a staat van rij 7 tot en met 169
Het doorlopen van deze macro duurt lang, is er een method deze sneller te krijgen?
Let op, op elke dag van de week kan de H er staan of kan hij weg zijn :-)

Code:
Dim tohide As Integer
For tohide = 7 To 169
If Range("a" & tohide) = "H" Then
  Rows(tohide & ":" & tohide).RowHeight = 0
End If
Next tohide
 
Ik weet niet wat jullie gewoon zijn maar hier doet die code 0,3 seconden daarover.

Sneller had ik hem nog niet.
 
Test deze dan eens:
Range("A6").AutoFilter
ActiveSheet.Range("$A$6:$A$166").AutoFilter Field:=1, Criteria1:="<>" & "H", Operator:=xlFilterValues
 
Het kan geen 13 sec duren om 160 rijen te doorspitten. Zet ScreenUpdating en Calculation eens uit aan begin v/d macro en terug aan op het eind.
 
tja, dat werkt wel erg snel en is eigenlijk ook het meest simple :)
Wel jammer dat je dan die lelijke filter pijltjes in beeld hebt, maar dat neem ik voor lief!

thnx!
 
Warme Bakkertje: Beide uitgezet, maar blijft echt 13 seconden draaien voordat hij klaar is... :(
 
Dan zou ik als het gaat om niet-vertrouwelijke informatie dat werkblad wel eens willen zien.
 
hmmm... Ik heb de code geplakt in een geheel nieuw workbook en daar werkt ie inderdaad snel.

Kan het zijn dat een workbook na verloop van tijd "Ergens door" vertraagt en dit niet te vinden is in codes?
 
Zou kunnen dat het gebruikte bereik groter is dan het zichtbare bereik (opmaak, langer doorgetrokken formules ...). Druk maar eens ctrl-end in en zie waar je cursor eindigt. Iets dat je kan proberen is alle rijen onder je laatstgevulde cel selecteren en rechtsklikken en verwijderen kiezen, hetzelfde met de kolommen. Dan je Workbook opslaan, sluiten en heropenen.
Zijn er ook eventueel event-macro's aanwezig achter het bewuste werkblad zoals Change, Selection-Change, Calculate e.d. ? In dat geval kan je ook EnableEvents uitshakelen aan't begin en terug inschakelen aan het eind.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan