Meerdere gevolgde acties uitvoeren in VBA

Hallo

Wanneer ik mijn plotter activeer, zou deze moeten initialiseren (ongeveer 30 seconden). In de tussentijd zou ik alleen maar een UserForm willen weergeven dat zegt dat we moeten wachten en dat wordt verwijderd zodra de initialisatie van de plotter is voltooid.

Mijn probleem is dat:

Als ik VBA vertel om de plotter te initialiseren en vervolgens het userform open, opent het userform na 30 seconden.
Omgekeerd, als ik zeg dat ik eerst het gebruikersformulier moet openen, wordt de rest van de code uitgevoerd zodra het gebruikersformulier is gesloten.

 

Heb je enig idee hoe ik dit kan oplossen of omzeilen? Bedankt.

Waarom maak je niet 2 macrox voor de 2 bewerkingen, en maak je dan een macro die deze 2 macro's aanroept?

 

Daarna ben ik een quiche in vba ^^

2 likes

Hallo

Wilt u een laadbalk invoegen tijdens de initialisatietijd?

[bewerken] Ik ben ook een VBA-quiche

1 like

Hallo

Waarom voeg je de rest van de code niet in het gebruikersformulier in (door er met de rechtermuisknop op te klikken)?

Edit: zie hier, dat is wat ik voorstelde:

http://www.excelabo.net/excel/userform_message

Toon en verberg userform met .show en .hide

1 like

Hallo

In feite start u uw gebruikersformulier.

Dan start je de plotter (Trouwens, wat is het?). Als de taak klaar is, sluit je het gebruikersformulier.

 

 

1 like

Hier is een tutorial voor een voortgangsbalk: http://www.blog-excel.com/barre-de-progression-excel/

+1 Lucas!

1 like

@Aurelien: In macro wordt het niet aanbevolen om voortgangsbalken te gebruiken. Om het goed te laten werken, zou het inderdaad multithreaded beheer vereisen (beheer van meerdere taken tegelijkertijd). Want zo niet, dan "bevriest" de balk tijdens de uitvoering van de macro en is dus nutteloos.

2 likes

Hier is een snelle macro die het probleem illustreert.

 

Wanneer de macro wordt gestart, wordt UserForm1 weergegeven. Zodra we het sluiten, wordt UserForm2 geopend en één voor één sluit het MessageBox.

http://cloud.winlap.ch/download/455

Dit is precies het probleem dat ik heb met mijn plotter, ik zou bijvoorbeeld mijn twee gebruikersformulieren tegelijkertijd moeten openen.

 

Bedankt

 

Bewerken:

Ah, ik zag net het bericht van .PL, ik wist niet dat er de "_activate" -methode was, ik kende "_initialize" voor Excel, maar het werkte niet op SW of ik had een fout gemaakt. Ik hou je op de hoogte, bedankt!

Bewerken 2:

Het werkt niet. Mag ik je vragen om je oplossing te testen op de macro die ik heb geüpload? Om erachter te komen of ik degene was die een fout had gemaakt. Bedankt

1 like

Blijkbaar moet je bij Doevents kijken om te zien: https://support.office.com/fr-fr/article/DoEvents-fonction-7af41eca-88e0-470d-adaf-0b3d4c2575b0

Dat elimineert wat ik eerder zei over de voortgangsbalk. ;-)

Ah ik denk dat ik net een oplossing heb gevonden!!

 

Het toevoegen van "vbModeless" na de "UserForm.Show" lijkt te werken. Controleren

PS: Bedankt rem, maar in feite begreep ik het nut van DoEvents niet echt?

Samenvattend stelt DoEvents u in staat om te wachten tot een actie volledig is voltooid voordat u de procedure voortzet.

Het stelt je dus in staat om het programma op een schone manier te pauzeren en niet in een vacuüm te draaien, de processor te overbelasten met nutteloze berekeningen om te wachten.

Dank u voor uw antwoord,

omdat het venster goed opent, maar de inhoud niet laadt (Dus wit venster) en het venster laadt zodra de actie is voltooid.

 

Ik bied nu en nu al mijn excuses aan als ik de komende twee weken (vakanties) niet actief zal zijn.