Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Überprüfen, ob Formular geöffnet ist

In 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:

  1. Ist das Objekt überhaupt geöffnet?
  2. Falls ja, in welcher Ansicht wird es gerade angezeigt?

Für die Ermittlung des genauen Zustandes verwenden Sie zwei Funktionen beziehungsweise Eigenschaften.

Die Funktion SysCmd

Mit 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 CurrentView

Hat 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

© 2003-2010 André Minhorst Alle Rechte vorbehalten.