Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Ueberpruefen ob Unter/Hauptformular

Begonnen von AOT, Juli 10, 2024, 13:34:19

⏪ vorheriges - nächstes ⏩

AOT

Liebes Forum,

ich möchte für eine Funktion vorher überprüfen, ob ich mich gerade in einem Hauptformular oder einem Unterformular befinde. Dabei sind gleich zwei Fragen / Probleme aufgetaucht:

Ich wollte das mit
If me.parent is Nothing überprüfen.

Das funktioniert, wenn ich mich in einem UF befinde. Wenn ich in einem HF bin, dann kommt die Fehlermeldung: "Laufzeitfehler 2452. Der von Ihnen eingegebene Ausdruck enthält einen ungültigen Verweis auf die Hauptobjekt-Eigenschaft." Kann man das so nicht überprüfen?

Zweites Problem: Da ich es öfter brauche, habe ich es zunächst mit Screen.ActiveForm.parent probiert, was weder bei einem UF noch bei einem HF funktioniert. Dazu sagt Microsoft auch: "Wenn ein Unterformular den Fokus hat, verweist ActiveForm auf das Hauptformular." Gibt es hier eine Alternative?

Vielen Dank und viele Grüße
Jürgen


  •  

PhilS

Das ist einer der eher wenigen Anwendungsfälle, wo ich zur Verwendung von On Error Resume Next raten würde.
Dazu solltest du dir eine eigene Funktion schreiben, die das kapselt. Die kann gut in ein allgemeines Modul.
Public Function IstUnterformular(DasFormular as Form) As Boolean
  Dim dummyParent as Object
  On Error Resume Next
  Set  dummyParent  = DasFormular.Parent
  On Error goto 0
  IstUnterformular  = Not  dummyParent Is Nothing
End Function

Aufruf dann so:
If IstUnterformular(Me) Then
  MsgBox("Aktuelles Form ist ein UFO!")
Else
  MsgBox("Aktuelles Form ist ein Hauptform")
End If

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •  

AOT

Lieber PhilS,

danke für die Antwort!

Gruß Jürgen
  •