Discussion:
Formular schließt sich nicht wieder (Word 2003/2007)
(zu alt für eine Antwort)
s***@gmail.com
2010-10-27 15:56:06 UTC
Permalink
Hallo, NG,

ich bin langsam am Verzweifeln. Ich habe ein VBA-Formular erstellt, es
geht nur darum, dass der Anwender einen von mehreren Optionsbuttons
anklickt und dann OK. Je nachdem, welcher Optionsbutton gewählt wurde,
werden im dahinter liegenden Doc. personenbezogene Einträge gemacht.
Ich rufe das Formular über einen Mini-Makro auf
Sub frmStart
frmDaten.Show
End Sub
Der OK-Button hat derzeit nur einen Befehl drinstehen, nämlich End.
Wenn ich den Mini-Makro direkt aus Word aufrufe, passiert genau das,
was ich will, nämlich, dass das Formular nach Klick auf ok wieder
verschwindet. Leider wird der Makro aber von einer anderen Anwendung
aus aufgerufen, er startet auch einwandfrei, zeigt das Formular, nur
wenn ich auf ok klicke, passiert erst mal gar nichts, erst beim 2.
Klick verschwindet das Formular.

Kennt jemand das Problem und wie man dem beikommen kann? Ich verstehe
überhaupt nicht, wieso der Makro unterschiedliches Verhalten zeigt,
ich habe jetzt einen Button auf den Makro in Word in die
Schnellstartleiste gelegt, auch da verschwindet das Formular direkt
beim ersten Klick auf den ok-Button, nur wenn ich den Makro von extern
anschubse, bleibt das Teil stehen *GRRR*. Danke schon mal für Eure
Tipps!

Susanne
Wolfram Jahn
2010-10-27 18:20:29 UTC
Permalink
"End" kenn ich garnicht dafür.

Ich nehme Hide oder Unload, je nachdem, ob ich noch auf Inhalte
zugreifen will oder nicht.


Wolfram
s***@gmail.com
2010-10-28 07:02:07 UTC
Permalink
Post by Wolfram Jahn
"End" kenn ich garnicht dafür.
Ich nehme Hide oder Unload, je nachdem, ob ich noch auf Inhalte
zugreifen will oder nicht.
Wolfram
Habe ich leider auch schon beide ohne erfreulicheres Ergebnis
ausprobiert. Wenn ich den Makro von Hand ausführe, verschwindet das
Formular, wenn die externe Anwendung den Makro aufruft, bleibt es
stehen. Eigentlich soll das ok natürlich auch nicht nur das Formular
schließen, sondern ein paar Aktionen ausführen, z. B. zu einer
Textmarke springen und dort die Userinitials eintragen. D. h. das
Problem ist nicht mit einem 2. Klick auf ok aus der Welt, weil dann
mit dem 2. Klick natürlich die Textmarke noch einmal gesucht wird, die
aber dann nicht mehr da ist (das ist nur einer der Punkte, die sich
aus dem Fehlverhalten ergeben, ich weiß, dass ich die Textmarke nach
dem Schreiben der UserInitials neu erstellen könnte).

Hat niemand eine Idee, woran das liegen könnte? Ich habe auch schon
ein komplett neues Formular erstellt und nur einen ok-Button
eingefügt, der das Formular zum Verschwinden bringen soll. Selbst dann
habe ich das Problem. Es liegt auch nicht an meinem Rechner, ich habe
es auf mehreren Maschinen mit dem gleichen Ergebnis getestet
Hartwig Constien
2010-10-28 14:03:44 UTC
Permalink
Hallo Susanne,

Du müsstest schon genauer sagen, was das für ein externes Programm ist, wie
es den Aufruf eigentlich macht und welche Jobs es sonst noch ausführt.

Vielleicht hilft es, wenn Du das Formular modal aufrufen lässt.

Vielleicht verliert Deine Form auch nur den Fokus, weil das Fremdprogramm
noch an anderen Dingen rumwerkelt? Dann würde der erste Klick auf OK nur den
Fokus zurückholen und erst der zweite Klick die gewünschten Aktionen
ausführen, aber eben nicht doppelt.

Alternativ könntest Du Dir eine Klasse bauen, die ihrerseits eine neue
Instanz des Formulares modal öffnet und die gewählte Option nach OK als
Property oder Funktionswert zurückliefert. Die Terminierung der Klasse
entfernt zuverlässig auch die von ihr erstellten Objekte. Du rufst die
Klasse in Deinem Makro auf und führst nach Abschluss die gewünschten
Aktionen durch.

Hang loose, Hartwig
s***@gmail.com
2010-12-25 17:00:13 UTC
Permalink
Hallo, ich habe das Rätsel gelöst. Es gab in dem externen Programm
eine fehlerhafte Einstellung, der eigentlich zu einer Fehlermeldung
hätte führen müssen. Statt dessen wurde das Formular 2x geladen.
Nachdem ich den Fehler bereinigt hatte, war auch das Problem mit den
doppelten Formularen erledigt.
Post by Hartwig Constien
Hallo Susanne,
Du m sstest schon genauer sagen, was das f r ein externes Programm ist, wie
es den Aufruf eigentlich macht und welche Jobs es sonst noch ausf hrt.
Vielleicht hilft es, wenn Du das Formular modal aufrufen l sst.
Vielleicht verliert Deine Form auch nur den Fokus, weil das Fremdprogramm
noch an anderen Dingen rumwerkelt? Dann w rde der erste Klick auf OK nur den
Fokus zur ckholen und erst der zweite Klick die gew nschten Aktionen
ausf hren, aber eben nicht doppelt.
Alternativ k nntest Du Dir eine Klasse bauen, die ihrerseits eine neue
Instanz des Formulares modal ffnet und die gew hlte Option nach OK als
Property oder Funktionswert zur ckliefert. Die Terminierung der Klasse
entfernt zuverl ssig auch die von ihr erstellten Objekte. Du rufst die
Klasse in Deinem Makro auf und f hrst nach Abschluss die gew nschten
Aktionen durch.
Hang loose, Hartwig
Lesen Sie weiter auf narkive:
Loading...