Opgelost Code veel sneller bij starten in VB-editor dan bij starten vanaf werkblad

Dit topic is als opgelost gemarkeerd

SjonR

Verenigingslid
Lid geworden
10 nov 2016
Berichten
3.317
Goedemiddag helpers!

Ik merk bij sommige code die ik gebruik dat wanneer ik het via de VB-editor draai met F5 het vele malen sneller werkt dan wanneer ik de code aanroep vanaf een knop op het werkblad.

herkennen jullie dit?

Gr.

SjonR
 
Niks van te zeggen zo, maar er zal dan wel een event getriggerd worden.
 
ja, dat dacht ik dus ook, maar ik verwacht dat dat event getriggerd wordt ongeacht via welke weg ik de code aanroep. En er is geen enkel event in het werkblad.
 
Misschien handig de code hier te plaatsen en te vertellen welke andere manier dan F5 je gebruikt om die code te starten.
 
Code:
If Blad2.Cells(28, 2).Value = "Ja" Then
    Application.ScreenUpdating = False

    minimum = Blad2.Cells(30, 2).Value

    Bcat = Blad2.Cells(32, 2).Value

    With ActiveSheet.Range("I2:I300000")

        .FormulaR1C1 = "=SUMIF(C4,RC[-5],C21)"

        .Value = .Value

    End With

 

    Bereik = ActiveSheet.Range("A2:AC300000")

 

    For i = 1 To 299999

        If Bereik(i, 9) > minimum Then Bereik(i, 19) = Bcat

    Next

 

    ActiveSheet.Range("A2:AC300000") = Bereik

    Application.ScreenUpdating = True


End If

Dit stukje bijvoorbeeld. Duurt 30 a 40 seconden als ik het start vanuit de VB-editor met F5 en ruim vier minuten als ik het aanroep via een vorm gekoppeld aan de code.
 
Laatst bewerkt:
En wanneer ik het aanroep via het lint is het ook veel trager
 
In een werkblad met B28="Ja" en verder leeg duurt het bij mij op alle drie manieren (Alt+F8, F5 in VBA, via button op werkblad) vrijwel precies even lang, 11,8 sec. Wat voor data staat er in jouw werkblad?
 
300000 rijen met allerlei data zoals datums en getallen. De extra tijd die het kost buiten de VB-editor om zit in het berekenen van de threads. Dat gaat heel langzaam. Maar ik ben dus benieuwd waarom dit bij het starten vanuit de VB-Editor niet zoveel tijd kost.
 
En dat werkblad kan ik niet plaatsen hier, gezien de privacy.
 
Het is verbluffend eenvoudig de gegevens van een werkblad te anonimiseren.

Code:
Sub M_snb()
    On Error Resume Next
    Randomize
    c00 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()_+-={}[]|\:;" '<>?,./"
    y = Len(c00)
    
    For Each it In Selection
      it.Value = Mid(c00, Rnd * y, 1) & Mid(c00, Rnd * y, 1) & Mid(c00, Rnd * y, 1) & Mid(c00, Rnd * y, 1) & Mid(c00, Rnd * y, 1)
    Next
End Sub
 
@snb Dank voor je code. Ga ik zeker even proberen.

Het gaat meer om het feit dat het een bestand is in mijn werkomgeving. Die kan ik simpelweg niet uploaden vanaf mijn werkomgeving. Ik ga nog even verder testen of ik de oorzaak kan vinden.

ook dank aan @AHulpje en @edmoor
 
Terug
Bovenaan Onderaan