Ausführen mehrerer verfolgter Aktionen in VBA

Hallo

Wenn ich meinen Plotter aktiviere, sollte er initialisiert werden (ca. 30 Sekunden). In der Zwischenzeit möchte ich nur ein UserForm anzeigen, das besagt, dass wir warten müssen und das verschwindet, sobald die Initialisierung des Plotters abgeschlossen ist.

Mein Problem ist, dass:

Wenn ich VBA anweise, den Plotter zu initialisieren und dann das Benutzerformular zu öffnen, öffnet sich das Benutzerformular nach 30 Sekunden.
Umgekehrt, wenn ich sage, dass zuerst das Benutzerformular geöffnet wird, wird der Rest des Codes ausgeführt, sobald das Benutzerformular geschlossen wird.

 

Haben Sie eine Idee, wie ich das Problem beheben oder umgehen kann? Vielen Dank.

Warum erstellen Sie nicht 2 Makros für die 2 Operationen und erstellen dann ein Makro, das diese 2 Makros aufruft?

 

Danach bin ich eine Quiche in vba ^^

2 „Gefällt mir“

Hallo

Möchten Sie während der Initialisierungszeit einen Ladebalken einfügen?

[Bearbeiten] Ich bin auch eine VBA-Quiche

1 „Gefällt mir“

Hallo

Warum fügen Sie nicht den Rest des Codes in das Benutzerformular ein (mit einem Rechtsklick darauf)?

Bearbeiten: siehe hier, das habe ich vorgeschlagen:

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

Ein- und Ausblenden des Benutzerformulars mit .show und .hide

1 „Gefällt mir“

Hallo

Tatsächlich starten Sie Ihr Benutzerformular.

Dann startest du den Plotter (übrigens, was ist das?). Wenn die Aufgabe abgeschlossen ist, schließen Sie das Benutzerformular.

 

 

1 „Gefällt mir“

Hier ist ein Tutorial für einen Fortschrittsbalken: http://www.blog-excel.com/barre-de-progression-excel/

+1 Lucas!

1 „Gefällt mir“

@Aurelien: Im Makro wird die Verwendung von Fortschrittsbalken nicht empfohlen. Damit es ordnungsgemäß funktioniert, wäre eine Multithread-Verwaltung (Verwaltung mehrerer Aufgaben gleichzeitig) erforderlich. Denn wenn nicht, "friert" der Balken während der Ausführung des Makros ein und ist somit unbrauchbar.

2 „Gefällt mir“

Hier ist ein kurzes Makro, das das Problem veranschaulicht.

 

Wenn das Makro gestartet wird, wird UserForm1 angezeigt. Sobald wir es schließen, öffnet sich UserForm2 und danach wird MessageBox nacheinander geschlossen.

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

Das ist genau das Problem, das ich mit meinem Plotter habe, zum Beispiel müsste ich meine beiden Benutzerformulare gleichzeitig öffnen.

 

Vielen Dank

 

Redigieren:

Ah, ich habe gerade die Nachricht von .PL gesehen, ich wusste nicht, dass es die "_activate"-Methode gibt, ich wusste "_initialize" für Excel, aber es funktionierte nicht in SW oder ich hatte einen Fehler gemacht. Ich halte Sie auf dem Laufenden, danke!

Bearbeiten 2:

Es funktioniert nicht. Darf ich Sie bitten, Ihre Lösung mit dem von mir hochgeladenen Makro zu testen? Um herauszufinden, ob ich derjenige war, der einen Fehler gemacht hat. Vielen Dank

1 „Gefällt mir“

Anscheinend muss man bei Doevents nachsehen, um zu sehen: https://support.office.com/fr-fr/article/DoEvents-fonction-7af41eca-88e0-470d-adaf-0b3d4c2575b0

Dadurch wird das, was ich zuvor über den Fortschrittsbalken gesagt habe, eliminiert. ;-)

Ah, ich glaube, ich habe gerade eine Lösung gefunden!!

 

Das Hinzufügen von "vbModeless" nach "UserForm.Show" scheint zu funktionieren. Zur Überprüfung

PS: Danke rem, aber tatsächlich habe ich den Nutzen von DoEvents nicht wirklich verstanden?

Zusammenfassend lässt sich sagen, dass Sie mit DoEvents warten können, bis eine Aktion vollständig abgeschlossen ist, bevor Sie den Vorgang fortsetzen.

So können Sie das Programm auf saubere Weise anhalten und nicht in einem Vakuum laufen lassen, das den Prozessor mit nutzlosen Berechnungen überlastet, um zu warten.

Vielen Dank für Ihre Antwort,

weil das Fenster gut geöffnet wird, aber der Inhalt nicht geladen wird (also weißes Fenster) und das Fenster geladen wird, sobald die Aktion abgeschlossen ist.

 

Ich entschuldige mich jetzt und schon, wenn ich in den nächsten zwei Wochen (Feiertagen) nicht aktiv sein werde.