Wie kann ich in VBA das Programm dazu bringen, zu pausieren, bis der Nutzer eine Eingabe gemacht hat?

4 Antworten

Es gibt die Möglichkeit, dass du ein weiteres Formular als Dialog öffnest, wo dann halt die beiden Werte eingetragen werden können. Der Code vom aufrufenden Formular würde dann so lange stehen bleiben. Allerdings musst du dich dann darum kümmern, dass du irgendwie mit public-Variablen die Daten aus dem Dialogformular ins andere Formular kriegst.

DoCmd.OpenForm "Formularname", WindowMode:=acDialog

Wenn du alles in einem Formular machst, fällt mir keine andere Lösung ein, als das wirklich in zwei getrennten Prozeduren zu machen.

ich kenne deine aufbau nicht aber bei einem console.read... Pausiert/wartet ja schon mal der hauptthread

die anderen threads kannst du davor ja schlafen legen und danach fortsetzten, sollte ja nicht das problem sein.


Garfield0001  29.11.2016, 11:22

Wo gibt's in vba das Objekt 'console'?

0
Kiboman  29.11.2016, 12:52
@Garfield0001

dann eben äquivalent zu c# der funktions umfang ist quasi gleich.

und vom logischem ist es fast egal welche hochsprache es ist

0
Garfield0001  29.11.2016, 23:23

Aber ein vba gibt's das nicht :)

0

Vielleicht jetzt auch nicht das Wahre, wenn du die Werte über Inputboxen abfragst und diese VBA-technisch in die Zellen schreibst, dann kannst du das script weiterlaufen lassen, die Inputbox pausiert automatisch dein script bis zur nächsten Zeile.

Woher ich das weiß:Berufserfahrung – Softwareentewickler / Unternehmensberater bei CSDIT iR

Pausieren kannst du den Code nur über einen Timer (oder so) oder indem du eine MsgBox oder InputBox einbaust.
Du musst ansonsten den Code teilen.
Auch Excel - Tabellen haben Ereignisse, die programmiert werden können. Zb das Change-Ereignis. Dort kannst du dann prüfen, ob eben in die gewollten Zellen Werte ein getragen werden und nur dann lässt du den folgenden Code ausführen.
Dh dass das Ereignis zwar bei jeder Veränderung in der Tabelle ausgeführt wird, aber eben nur wenn die Wenn-Bedingung (die du selbst erstellen musst was da kochen konkret erfüllt sein muss) erfüllt ist, läuft dein Code durch


Ninombre  29.11.2016, 12:28

Bist Du bei diesem Vorgang auch mit der Userform unterwegs (wg. der anderen Fragen)? Ich würde es dann vermeiden zwischen Userform und Tabellenblatt hin- und herzuwechsel und es durchgängig in der Userform bzw. ergänzt um Inputboxen zu erfassen. Damit kannst Du den Ablauf und Plausibilitäten besser steuern.

Um durch Worksheet_change u.ä. Events den Vorgang fortzusetzen, wirst Du vermutlich globale Variablen brauchen, um zu erkennen, ob der erste Teil des Scrips durchlaufen wurde (d.h. das erste Script setzt einen bestimmten Wert für die public, ggf. muss man dort auch festhalten, welche Zeilen neu eingefügt wurden, um bei einer Änderung gezielt prüfen zu können, ob diese Zeilen bearbeitet wurden)

0