Überprüfen, ob Formular geöffnet istIn vielen Fällen ist es interessant, ob ein Formular geöffnet ist und in welcher Ansicht es sich derzeit befindet. Das kann zum Beispiel der Fall sein, wenn in einem anderen Formular Daten bearbeitet werden, die in dem betroffenen Formular ebenfalls angezeigt werden und dort gegebenenfalls aktualisiert werden müssen. Das kann natürlich nur passieren, wenn der aktuelle Zustand des Formulars bekannt ist.

Den Zustand ermitteln Sie in zwei Stufen: - Ist das Objekt überhaupt geöffnet?
- Falls ja, in welcher Ansicht wird es gerade angezeigt?
Für die Ermittlung des genauen Zustandes verwenden Sie zwei Funktionen beziehungsweise Eigenschaften. Die Funktion SysCmdMit der ersten Funktion, SysCmd, lassen sich neben der Information, ob das angegebene Objekt geöffnet ist, noch einige weitere Systeminformationen abfragen. Um die unterschiedlichen Möglichkeiten zu verwenden, geben Sie den jeweils gewünschten Wert für den ersten Parameter der Funktion ein. Im VBA-Editor werden die für den ersten Parameter möglichen Werte angezeigt.
In unseren Fall handelt es sich um den Parameter acSysCmdGetObjectState. Als weitere Parameter erwartet die Funktion den Objekttyp (hier acForm) owie den Namen des Objektes.
Die Funktion gibt folgende Werte zurück:
0 Objekt ist geschlossen
1 Objekt ist geöffnet Die Eigenschaft CurrentViewHat sich das Formular als geöffnet herausgestellt, können Sie gefahrlos mit der Eigenschaft CurrentView des jeweiligen Formulars ermitteln, in welchem Zustand es sich gerade befindet.
Es gibt folgende drei Zustände:
0 Entwurfsansicht
1 Formularansicht
2 Datenblattansicht
Die anderen Ansichten wie die Pivot-Ansicht sollen hier außer Acht gelassen werden.
Alles zusammen können Sie in eine Wrapperfunktion packen, wie folgender Quellcode zeigt:
Function IstFormularGeoeffnet(strFormularname As String) As Boolean
If SysCmd(acSysCmdGetObjectState, acForm, strFormularname) <> 0 Then
If Forms(strFormularname).CurrentView <> 0 Then
IstFormularGeoeffnet = True
End If
End If
End Function |