xl2013 neemt zijn tijd voor een do-loop

Status
Niet open voor verdere reacties.

StephaanK

Gebruiker
Lid geworden
19 jun 2015
Berichten
34
ik heb een programma dat +- 45000 lijnen inleest via een do until loop. op een xl2010 duurt dat 30 sec in 2013 10-15 minuten
(wachtwoorden en grafics en animations al uitgeschakeld).
bestand in bijlage maar wel met 1000 lijnen omdat het anders te groot is.
ik kan het oplossen met een end(xlup).row telling maar dat is niet altijd een optie.

ik heb wel vastgesteld dat het voorkomt als je het programma de eerste keer opent. Als je het daarna sluit en terug opent gaat het inlezen sneller maar dat komt misschien omdat er nog iets in het geheugen zit.
Heeft er iemand een idee wat de oorzaak kan zijn?

Stephaan
 

Bijlagen

Code:
  MsgBox Sheets("sheet1").Columns(1).SpecialCells(2).Count + 8
 
enzovoorts meer:

Code:
Private Sub Workbook_Open()
   MsgBox Blad1.UsedRange.Rows.Count
   MsgBox Cells(Rows.Count, 1).End(xlUp).Row
   MsgBox Cells.SpecialCells(11).Row
End Sub

ik kan het oplossen met een end(xlup).row telling maar dat is niet altijd een optie.
waarom niet ?
 
Laatst bewerkt:
Als het je puur om snelheid gaat moet je het vullen van Application.Statusbar buiten de loop houden:
Code:
Application.StatusBar = "Counting lines..."
Do Until Range("A" & index).Value = ""
   index = index + 1
Loop
Application.StatusBar = False

Maar dan is de methode van snb nog veel sneller.
 
Laatst bewerkt:
bedankt voor alle info, ik ga die allemaal eens testen.
@snb in een aantal gevallen moet ik met een loop door alle lijnen gaan (al dan niet in een array en al dan niet met een for next of andere loop), niet om te tellen maar om bepaalde gevallen te selecteren of te testen en dan zou dat ook wel eens lang kunnen duren.
 
Als je alles eerst in een array inleest loopt ook dat als een speer.
Maar je kunt je code altijd nog vertragen door de statusbar te laten wijzigen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan