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.319 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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats ![]() Matthias Kozlowski Umlaute konvertieren Ersetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
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. |