Wie lässt sich prüfen, ob auf einer Form ein bestimmtes Control vorhanden ist oder nicht? Eine Quick-and-dirty-Methode wäre folgende: On Error Resume Next Dim sName As String Dim bExists As Boolean sName = Form1.Controls("Controlname").Name bExists = (Err.Number = 0) On Error Goto 0 Für den ein oder anderen Zweck würde obige Abfrage auch ausreichen. Wie sieht es aber aus, wenn es sich um ein Control aus einem Steuerelementfeld handelt? In diesem Fall würde obige Funktion versagen, da sich hier kein Index angeben lässt. Aus diesem Grund stellen wir Ihnen heute nachfolgende Universal-Funktion vor: ' Prüfen, ob ein bestimmten Control oder ' Controlarray-Element existsiert Public Function ControlExists(oForm As Form, _ sControlName As String, _ Optional Index As Variant) As Boolean Dim oControl As Control Dim bExists As Boolean Dim nIndex As Integer ' Control-Name für den Vergleich ' in Kleinbuchstaben umwandeln sControlName = LCase$(sControlName) ' Fehlerbehandlung einschalten On Error Resume Next ' alle Controls der Form durchlaufen For Each oControl In oForm With oControl ' Name vergleichen If LCase$(.Name) = sControlName Then ' Ok... Control gefunden Err.Clear If IsMissing(Index) Then ' Kein Index: Prüfen, ob es sich um ein ' Einzelcontrol handelt (kein Steuerlementfeld!) nIndex = .Index If Err.Number <> 0 Then bExists = True: Exit For End If Else ' Index vergleichen If .Index = Index Then If Err.Number = 0 Then bExists = True: Exit For End If End If End If End If End With Next On Error GoTo 0 ControlExists = bExists End Function Auch hier benötigen wir eine On Error Resume Next-Anweisung, da uns VB einen Fehler "ausspucken" würden, wenn man versucht die Index-Eigenschaft eines Controls zu lesen, dass jedoch kein Element eines Steuerlementfeldes ist. Jedoch können wir mit dieser Funktion sowohl "normale" Controls abfragen, als auch bestimmte Controls eines Steuerelementfeldes. Aufrufbeispiel: If ControlExists(Form1, "Text1") Then Text1.Text = "Test" If ControlExists(Form1, "Text2", 1) Then Text2(1).Text = "Test" Dieser Tipp wurde bereits 19.330 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |