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

berprfen, ob Formular geffnet ist

In vielen Fllen ist es interessant, ob ein Formular geffnet 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 mssen. Das kann natrlich nur passieren, wenn der aktuelle Zustand des Formulars bekannt ist.

Den Zustand ermitteln Sie in zwei Stufen:

  1. Ist das Objekt berhaupt geffnet?
  2. Falls ja, in welcher Ansicht wird es gerade angezeigt?

Fr 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 geffnet ist, noch einige weitere Systeminformationen abfragen. Um die unterschiedlichen Mglichkeiten zu verwenden, geben Sie den jeweils gewnschten Wert fr den ersten Parameter der Funktion ein. Im VBA-Editor werden die fr den ersten Parameter mglichen 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 zurck:

0 Objekt ist geschlossen

1 Objekt ist geffnet

Die Eigenschaft CurrentView

Hat sich das Formular als geffnet herausgestellt, knnen Sie gefahrlos mit der Eigenschaft CurrentView des jeweiligen Formulars ermitteln, in welchem Zustand es sich gerade befindet.

Es gibt folgende drei Zustnde:

0 Entwurfsansicht

1 Formularansicht

2 Datenblattansicht

Die anderen Ansichten wie die Pivot-Ansicht sollen hier auer Acht gelassen werden.

Alles zusammen knnen 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-2015 André Minhorst Alle Rechte vorbehalten.