FAQ 0045: Wie kann ich feststellen, ob eine Form geladen wurde?
von Helge Rex
Frage
Wie kann ich feststellen, ob eine Form geladen wurde?
Antwort
Es gibt mehrere Methoden, das festzustellen.
Die einfachste, aber auch ineffizenteste Methode ist der Einsatz einer globalen Variable. Dieser Weg ist sehr unflexibel.
Bei Weitem besser ist es, die Forms-Auflistung, welche VB zur Verfügung stellt, abzufragen.
Public Function IsFormLoaded(ByRef vData As Variant) ' Eine Variable wird benötigt Dim objForm As Form ' Standard-Rückgabe setzen IsFormLoaded = False ' Wurde ein String übergeben? If (VarType(vData) = vbString) Then ' Ja, alle Forms nach dem Namen durchsuchen For Each objForm In VB.Forms ' Ist die aktuelle Form die gesuchte? If objForm.Name = vData Then ' Ja, Form gefunden IsFormLoaded = True ' Das war es Exit Function End If Next objForm Else ' Nein, handelt es sich um ein Objekt? If (VarType(vData) = vbObject) Then ' Ja, dann den Namen raussuchen IsFormLoaded = IsFormLoaded(TypeName$(vData)) End If End If End Function
' Eine Variable wird benötigt Dim NewDLG As Form ' Eine Instanz des Dialogs anlegen Set NewDLG = New Form2 ' Dialog laden Load NewDLG ' Funktion aufrufen Debug.Print "Form2 als String: " & CStr(IsFormLoaded("Form2")) Debug.Print "Form2 als Objekt: " & CStr(IsFormLoaded(Form2)) ' Dialog entladen Unload NewDLG ' Instanz des Dialogs entfernen Set NewDLG = Nothing
Ihre Meinung
Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.