Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen, ob ein UF-Steuerelement existiert

Forumthread: Prüfen, ob ein UF-Steuerelement existiert

Prüfen, ob ein UF-Steuerelement existiert
Martin
Hallo liebe Excelfreunde,
gibt es eine einfache Möglichkeit (möglichst ohne "On Error"-Auswertung) abzufragen, ob bestimmte UserForm-Steuerelemente existieren? Ich habe mir eben eine kleine Function geschrieben, aber vielleicht geht es ja auch wesentlich einfacher in der Art "If Controls("NameSteuerelement") Exist Then...".
Function ControlExist(NameSteuerelement As String) As Boolean
Dim cnt As Control
For Each cnt In Me.Controls
If cnt.Name = NameSteuerelement Then
ControlExist = True
Exit Function
End If
Next
End Function
Viele Grüße
Martin
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prüfen, ob ein UF-Steuerelement existiert
28.02.2011 17:30:32
Josef

Hallo Martin,
was ist an deiner Funktion auszusetzen?

Gruß Sepp

Anzeige
AW: Prüfen, ob ein UF-Steuerelement existiert
28.02.2011 17:41:03
Martin
Hallo Josef,
nein, an meiner Function gibt es nichts auszusetzen. Da ich öfters unnötige Umwege gehe, wollte ich mich einfach nur nach einer einfacheren direkten VBA-eigenen Kontrollmöglichkeit erkundigen.
Viele Grüße
Martin
ohne Schleife
28.02.2011 22:02:28
ransi
HAllo MArtin
ICh hätte noch was Schleifenfreies:
Function ControlExist(NameSteuerelement As String) As Boolean
    Dim cnt As MSForms.Control
    On Error Resume Next
    Set cnt = Me.Controls(NameSteuerelement)
    ControlExist = Err = 0
    On Error GoTo 0
End Function


Aber ob das einfacher ist ...?
ransi
Anzeige
AW: ohne Schleife
28.02.2011 22:17:42
Martin
Hallo Ransi,
vielen Dank für deine Antwort. Hm..., also gibt es scheinbar wirklich keinen "einfachen Einzeiler". Was denkst du ist von der Performance her besser geeignet - dein oder mein Code? Ich vermute ja fast dein Code, obwohl ich ungern gezielt mit VBA-Fehlern arbeite, um an ein Ergebnis zu kommen. Echt schade, dass es keine direkte Möglichkeit der Abfrage gibt.
Viele Grüße
Martin
Anzeige
AW: ohne Schleife
28.02.2011 22:29:55
ransi
HAllo MArtin
Was denkst du ist von der Performance her besser geeignet - dein oder mein Code?
Füg nochmal ein par Steuerelemente in deine Userform ein und probiers aus ;-)
Option Explicit

Private Sub CommandButton1_Click()
    Dim i As Long
    Dim T As Double
    T = Timer
    For i = 1 To 100000
        ControlExist "abc"
    Next
    Debug.Print Timer - T
End Sub



'Function ControlExist(NameSteuerelement As String) As Boolean
' Dim cnt As MSForms.Control
' On Error Resume Next
' Set cnt = Me.Controls(NameSteuerelement)
' ControlExist = Err = 0
' On Error GoTo 0
'End Function

Function ControlExist(NameSteuerelement As String) As Boolean
    Dim cnt As Control
    For Each cnt In Me.Controls
        If cnt.Name = NameSteuerelement Then
            ControlExist = True
            Exit Function
        End If
    Next
End Function


ransi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Prüfen, ob ein UF-Steuerelement existiert


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein UserForm-Steuerelement existiert, kannst Du eine Funktion in VBA erstellen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA)-Editor in Excel (Alt + F11).

  2. Füge ein neues Modul hinzu, indem Du im Projektfenster mit der rechten Maustaste auf dein Projekt klickst und "Einfügen" > "Modul" auswählst.

  3. Kopiere folgenden Code in das Modul:

    Function ControlExist(NameSteuerelement As String) As Boolean
       Dim cnt As Control
       For Each cnt In Me.Controls
           If cnt.Name = NameSteuerelement Then
               ControlExist = True
               Exit Function
           End If
       Next
       ControlExist = False
    End Function
  4. Um die Funktion zu verwenden, rufe sie in Deinem UserForm oder in einem anderen Modul auf:

    If ControlExist("DeinSteuerelementName") Then
       ' Steuerelement existiert
    Else
       ' Steuerelement existiert nicht
    End If

Häufige Fehler und Lösungen

  • Fehler 1: "Variable nicht definiert"

    • Lösung: Stelle sicher, dass das Steuerelement korrekt benannt ist und in der UserForm existiert.
  • Fehler 2: "Typ nicht definiert"

    • Lösung: Achte darauf, dass du die richtige Referenz zu MSForms.Control hinzugefügt hast, wenn du mit UserForm-Steuerelementen arbeitest.
  • Fehler 3: "On Error Resume Next"

    • Lösung: Vermeide die Verwendung von "On Error Resume Next", wenn Du eine einfachere Methode ohne Fehlerbehandlung suchst.

Alternative Methoden

Eine alternative Methode zur Überprüfung, ob ein Steuerelement existiert, könnte die Verwendung von On Error sein. Hier ist ein Beispiel:

Function ControlExist(NameSteuerelement As String) As Boolean
    Dim cnt As MSForms.Control
    On Error Resume Next
    Set cnt = Me.Controls(NameSteuerelement)
    ControlExist = Not cnt Is Nothing
    On Error GoTo 0
End Function

Diese Methode ist kompakter, jedoch wird hierbei die Fehlerbehandlung verwendet, die einige Entwickler vermeiden möchten.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Funktion ControlExist in verschiedenen Szenarien verwenden kannst:

  • Beispiel 1: Überprüfen eines Textfeldes in einem UserForm:

    If ControlExist("TextBox1") Then
       MsgBox "Das Textfeld existiert."
    Else
       MsgBox "Das Textfeld existiert nicht."
    End If
  • Beispiel 2: Dynamisches Hinzufügen von Steuerungselementen:

    If Not ControlExist("CommandButton1") Then
       Dim btn As MSForms.CommandButton
       Set btn = Me.Controls.Add("Forms.CommandButton.1", "CommandButton1")
       btn.Caption = "Neuer Button"
    End If

Tipps für Profis

  • Verwende die ControlExist Funktion in Kombination mit anderen Bedingungen, um sicherzustellen, dass Deine UserForms immer benutzerfreundlich sind.
  • Füge Logging oder Debugging-Informationen hinzu, um die Überprüfung von Steuerelementen zu optimieren.
  • Überlege, eine zentrale Funktion zu erstellen, die alle Steuerelemente überprüft, um die Wartbarkeit Deiner UserForms zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Steuerelement den richtigen Namen hat? Überprüfe den Namen des Steuerelements in den Eigenschaften des UserForms. Der Name sollte genau übereinstimmen.

2. Gibt es eine Möglichkeit, alle existierenden Steuerelemente aufzulisten? Ja, Du kannst eine Schleife durch Me.Controls verwenden, um alle Steuerelemente aufzulisten und deren Namen auszugeben.

3. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code ist in allen Versionen von Excel, die VBA unterstützen, anwendbar, einschließlich Excel 2010 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige