POP Up teller aantal record toegevoegd (progress bar)

Status
Niet open voor verdere reacties.

loggy

Gebruiker
Lid geworden
11 aug 2011
Berichten
12
Hallo,

Ik heb een macro geschreven die 8 grote databases aanspreekt om daar data uit te verzamelen. Om dit enig sinds vlot te laten doen, heb ik uiteraard mijn screenupdating uit staan. Enkel omdat de macro wel 5-7min bezig kan zijn om alle info te verzamelen zou ik graag een pop up teller willen laten zien zodat ik wel kan zien of de macro nog runt of ergens in een eindeloze loop is beland. Ik zou dus graag zoiets zien:

Code:
Arecords = 1

Do until ............

(de macro die de databases doorzoekt)

Msgbox.close  '<= (iets wat de msbox uit de vorige loop-sessie weer sluit voordat een geupdate versie zichtbaar wordt.)
Arecords = Arecords + 1
Msgbox(Arecords & " regels toegevoegd")
Loop

Ik weet dat een msgbox niet te sluiten is, dus zit ik een beetje vast. Wellicht zoek ik de oplossing in de verkeerde richting, maar ik sta open voor alle ideeën
 
Om je een idee te geven. van een andere mogelijkheid.
Run de code en houd ondertussen je statusbar (links onderaan) in de gaten.
Code:
Sub tst()
    Arecords = 1
    Do Until Arecords = 10
        With Application
            oldStatusBar = .DisplayStatusBar
            .DisplayStatusBar = True
            .StatusBar = Arecords & " regels toegevoegd"
            .Wait (Now + TimeValue("0:00:02"))
            .StatusBar = False
            .DisplayStatusBar = oldStatusBar
        End With
        Arecords = Arecords + 1
    Loop
End Sub
 
Laatst bewerkt:
Als je de uitvoering van je macro wil vertragen moet je zoiets als een 'progress bar' toevoegen.

Optimaliseren van je code is waarschijnlijk effektiever.
 
Laatst bewerkt:
Heren bedankt.

Als je de uitvoering van je macro wil vertragen moet je zoiets als een 'progress bar' toevoegen.

SNB je hebt in princiepe gelijk, maar er zijn zoveel parameters, tabbladen en bestanden dat het nou eenmaal een traag proces is. De oplossing die door Warm Bakkertje is gegeven werkt, maar is inderdaad erg tijdrovend. Maar er zit wel in wat ik zoek. Ik heb enkel de regel .wait (duurt al lang genoeg) en .statusbar = false (verdwijnt die weer) eruit gehaald. Deze heb ik buiten de loop gezet. Zo krijg ik een teller die nog geen 1000e van een seconde kost per loop, maar mij wel de info geeft die ik wil. Mijn code ziet er nu als volgt uit:

Code:
Sub tst()
    Arecords = 1
    Do Until ......(einde zoekgebied mijn macro)

         ....(Mijn Macro runnen)

        With Application
            oldStatusBar = .DisplayStatusBar
            .DisplayStatusBar = True
            .StatusBar = Arecords & " regels toegevoegd"
            .DisplayStatusBar = oldStatusBar
        End With
        Arecords = Arecords + 1
    Loop
    Application.StatusBar = False
End Sub

Heren bedankt voor de input!
 
Die Wait was dan ook enkel om de code te vertragen zodat je kon zien wat er gebeurde
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan