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 20.263 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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 Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |