Fehlermeldung beim Verlassen eines Formularfelds

Ich habe unter Wordá97 ein Formular angelegt. Wenn ich jedoch das Formular als Benutzer anwende, erhalte ich beim Verlassen eines Feldes immer den Laufzeitfehler 4198: Befehl mißlungen. Die im Visual-Basic-Editor markierte Anweisung zum Schließen des Dokuments ist jedoch vollkommen korrekt. Was kann dieses merkwürdige Verhalten verursachen, und wie läßt sie sich beseitigen?

Die Anweisung für das Schließen selbst mag korrekt sein. An dieser Stelle ist sie jedoch für Visual Basic nicht durchführbar. Aus technischen Gründen läßt sich das Formular erst dann schließen, wenn alle Makroprozeduren beendet sind.
Um das Problem zu umgehen, müßte es also möglich sein, einen Vermerk über das Schließen des Formulars anzulegen, alle Makros abzuarbeiten und erst dann die gewünschte Aktion durchzuführen. Dieses Verhalten können Sie durch die OnTime-Methode erreichen. Mit Hilfe dieser Methode legen Sie einen Zeitpunkt fest, zu dem Word ein bestimmtes Makro ausführen soll. So ist es möglich, beim Verlassen des Formularfelds das Schließen des Dokumentes für den nächst möglichen Zeitpunkt vorzumerken.
Da die Methode jedoch keinen reinen Quelltext, sondern nur einen Makronamen als Parameter akzeptiert, müssen Sie die Aktionen in zwei Makros aufteilen. Das sieht dann zum Beispiel so aus:

Sub MakroBeimVerlassen ()¶
Application.OnTime When:=Now, Name:="DokumentSchliessen"¶
End Sub¶

Sub DokumentSchliessen ()¶
Application.ActiveDocument.Close (wdDoNotSaveChanges)¶
End Sub¶
Das erste Makro führen Sie beim Verlassen des Formularfelds aus. Es vermerkt mit Hilfe der OnTime-Methode, daß noch das Makro Dokument-Schliessen auszuführen ist. Als Parameter finden Sie eine Zeitangabe – in diesem Fall den Rückgabewert der Funktion Now – und den Namen des zu diesem Zeitpunkt auszuführenden Makros. Dank des Makroaufbaus stört der Zeitpunkt nicht weiter, es ist einfach der nächstmögliche. Nach dem Vermerk des Makroaufrufs kann Word das Formularmakro beenden. Dann wendet es sich der nächsten Aufgabe zu: Der Ausführung des zweiten Makros. Dort finden Sie die Ihnen bereits bekannte Anweisung zum Schließen des Dokuments.
Falls Sie die Inhalte des Dokuments zuvor noch speichern wollen, erweitern Sie das zweite Makro vor der Schließen-Anweisung mit dieser Zeile:
Application.ActiveDocument. Save¶
Jetzt sollte die Fehlermeldung nicht mehr auftauchen.