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.268 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. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Neu! sevDTA 3.0 Pro ![]() SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
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. |