Even geduld aub....

Status
Niet open voor verdere reacties.

Der Rudi

Gebruiker
Lid geworden
22 mei 2007
Berichten
5
Een Excel VBA vraagje: de macro die ik run duurt enige tijd. Ik heb daarom de scherm flikkering al onderdrukt en nu wil ik de gebruiker informeren dat hij even geduld moet hebben totdat de macro klaar is. Dan mag die boodschap ook weer automatisch verdwijnen. Heeft iemand hier een goed idee voor hoe dit aan te pakken?

Ruud.
 
Vraag verplaatst van Programmeren > Visual Basic naar Microsoft Office > Visual basic for Applications (VBA) :)
 
Je kunt dit op lossen door aan het begin van de macro een melding in de statusbalk te plaatsen:

Code:
Application.StatusBar = "Even geduld a.u.b. de gegevens worden verwerkt"
( een andere tekst mag natuurlijk ook)

En aan het einde van de macro kun je deze melding weer weghalen door:
Code:
Application.StatusBar = ""

Waar je nog wel even rekening mee moet houden, is dat als de macro kan stuklopen je bij de foutafhandeling ook de laatste code moet opnemen, anders blijft de eerste melding staan. Dat lijkt dan een beetje slordig ;)
 
Of ook:

Application.StatusBar = False

om het uit te zetten, dat mag ook.

De optie van de statusbalk lijkt me inderdaad goed. Je zou ook een voortgangsindicator (balkje) kunnen laten verschijnen, maar dat vertraagt de code nog meer.

Wees er eerst zeker van dat de code niet op zich verbeterd kan worden.

Wigi
 
Als je het duidelijk in beeld wil brengen voor de gebruiker kun je ook een userform aanmaken dat je in het begin van de macro opent en aan het eind weer sluit.
Ook hiervoor geldt dat dit blijft staan als de macro vastloopt, dus ook dan sluiten.
Wel is het mogelijk om het userform handmatig te sluiten als er iets fout gaat, statusbalk handmatig terugzetten gaat niet.
 
Als je het duidelijk in beeld wil brengen voor de gebruiker kun je ook een userform aanmaken dat je in het begin van de macro opent en aan het eind weer sluit.
Ook hiervoor geldt dat dit blijft staan als de macro vastloopt, dus ook dan sluiten.
Wel is het mogelijk om het userform handmatig te sluiten als er iets fout gaat, statusbalk handmatig terugzetten gaat niet.

Beste Jan,
Als ik jouw oplossing gebruikt werkt de macro niet verder dan alleen het laten zien van de boodschap. Pas als ik die wegklikt loopt de rest van de macro. Dat is niet de bedoeling. Heb je hier soms ook een oplossing voor?
 
Gebruik hetvolgende om meteen door te gaan:

Code:
Userfom.show 0


uit de help van VBA
Show, methode


Geeft een UserForm-object weer.

Syntaxis

[object.]Show modal

De syntaxis van de methode Show bestaat uit de volgende onderdelen:

Onderdeel Beschrijving
Object Optioneel. Een objectexpressie die gelijkwaardig is aan een object in de lijst Van toepassing op. Indien object is weggelaten, wordt de UserForm die met de actieve UserForm-module samenhangt, beschouwd als object.
modal Optioneel. Boole-waarde die bepaalt of het UserForm modaal of niet modaal is.



Instellingen

De instellingen voor modal zijn:

Constante Waarde Beschrijving
vbModal 1 UserForm is modaal. Standaard.
vbModeless 0 UserForm is niet modaal.



Notities

Indien het gespecificeerde object niet geladen is wanneer de methode Display wordt aangeroepen, laadt Visual Basic het automatisch.

Opmerking Als een UserForm in Microsoft Office 97 is ingesteld om als niet-modaal te worden weergegeven, veroorzaakt dit een runtimefout. Office 97 UserForms zijn altijd modaal.

Wanneer een UserForm niet modaal is, wordt de verdere programmacode uitgevoerd zoals deze verschijnt. Niet-modale formulieren verschijnen niet in de taakbalk en staan niet op de venstertabs.

Opmerking Het is mogelijk dat u gegevens verliest die aan een niet modaal UserForm zijn gekoppeld als u het UserForm-project wijzigt zodat het opnieuw moet worden gecompileerd, bijvoorbeeld wanneer u een module met programmacode verwijdert.

Wanneer een UserForm modaal is, moet de gebruiker eerst reageren voordat hij enig ander onderdeel van de toepassing gebruikt. Er wordt geen volgend deel van de programmacode uitgevoerd totdat de UserForm verborgen of uit het geheugen verwijderd is. Andere formulieren in de toepassing worden uitgeschakeld als een UserForm weergegeven wordt, maar voor andere toepassingen geldt dat niet.
 
We zijn er bijna, dit lijkt te werken. Echter, de Caption en de Text van de form zelf worden niet weergegeven.
Voor de rest gaat-ie goed (openen en sluiten).
 
Antie-knipper

Ik zet bij begin macr de schermverversing uit.
Application.Screenupdating = False
Net voor einde weer op True
daarna of daarvoor cursor op rustige plek, b.v. op A1
Dit gecombineerd met de statusbalkmededeling.. Die helaas niet wordt gezien:confused:

Nu ben ik nog bezig om een soort tussenplaatje (bewegend?)te maken die groot in beeld komt... Beetje als op internet met een pagina die "under construction" is.

Helaas is het een "op het werk klus" dus heb ik vaak niet de software om bv een tussen filmpje te maken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan