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
Das ist einer der eher wenigen Anwendungsfälle, wo ich zur Verwendung von On Error Resume Next (https://www.youtube.com/watch?v=D4yxwUplWvc) 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
Lieber PhilS,
danke für die Antwort!
Gruß Jürgen