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

Forumthread: Userform Eingabe sperren

Userform Eingabe sperren
21.01.2015 09:46:50
Peter
Hallo,
ich habe ein Userform mit einer Optionsgruppe und mit ca. 20 Textfeldern. Nun möchte ich verhindern, dass Eingaben in die Felder gemacht werden können.Die Eingabe soll erst möglich sein, wenn ich die Schaltfläche "Bearbeiten" oder "Neu" angeklickt habe.
Ich habe hierfür eine Public Variable deklariert (byteAktiv), der ich den Wert 0 (deaktiviert) bzw. 1 (aktiviert) zuweise. In den entsprechenden Subs würde ich nun mit einem IF für die Unterscheidung der Fälle sorgen.
Ich hoffe bis hier ist noch alles richtig.
Allerdings habe ich gerade zum aktivieren/deaktivieren der Steuerelemente 2 Fragen:
1. Was ist der Unterschied zwischen
TextBox11.Locked = True und
TextBox11.Enabled = False
Ist eine Methode zu bevorzugen oder sind es nur 2 Methoden mit gleicher Auswirkung?
2. Kann ich alle Steuerelemente (Schaltflächen ausgenommen) mit einem Befehl bzw. einer Schleife auf einmal aktivieren/deaktivieren oder muss ich das explizit für jedes Steuerelement angeben?
Gruß,
Peter

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Eingabe sperren
21.01.2015 10:00:48
Nepumuk
Hallo Peter,
Locked bedeutet du kannst die TextBox anwählen aber nichts eingeben, vorhandener Text wird normal angezeigt. Enabled bedeutet du kannst die Box gar nicht anwählen, vorhandener Text wird aus gegraut angezeigt.
Ich persönlich benutze Enabled, denn das ist eindeutiger.
Gruß
Nepumuk

Anzeige
AW: Userform Eingabe sperren
21.01.2015 10:09:37
yummi
Hallo Peter,
locked gibt an, ob das Steuerelement den Fokus bekommen kann
enabled sorgt dafür, ob es aktiv oder abgeblendet angezeigt wird.
es gibt dann durch setzten der Werte verschiedene Effekte steht aber in der hilfe von enabled sehr gut beschrieben.
Wenn alle deine Steuerlemente den gleichen Namen haben (wovon ich nicht ausgehe) dann kannst du es mit einem Befehl machen.
Aber du kannst es über eien Schleife machen z.B.

Dim obj As Object
Dim i As Integer
' Namen für Optionsschaltflächen einlesen
For Each obj In Me.Controls
If Left(TypeName(obj), 7) = "TextBox" Then
i = i + 1
obj.Enabled = False
obj.Locked = False
End If
Next obj
Damit würdest Du alle Textboxen auf abblenden und ohne die möglichkeit den Fokus zu bekommen setzen.
Gruß
yummi

Anzeige
AW: Userform Eingabe sperren
21.01.2015 10:12:54
Peter
Super, besten Dank für die schnellen Antworten.
;
Anzeige
Anzeige

Infobox / Tutorial

Userform Eingabe sperren in Excel


Schritt-für-Schritt-Anleitung

Um Eingaben in einer Userform in Excel zu sperren, kannst du folgende Schritte befolgen:

  1. Userform erstellen: Öffne den VBA-Editor (Alt + F11) und füge eine neue Userform ein.

  2. Steuerelemente hinzufügen: Füge eine Optionsgruppe, mehrere Textfelder und Schaltflächen (z.B. "Bearbeiten" und "Neu") hinzu.

  3. Public Variable deklarieren: Deklariere eine Public Variable, z.B. byteAktiv, um den Zustand der Eingaben zu steuern:

    Public byteAktiv As Integer
  4. Ereignis der Schaltfläche "Bearbeiten":

    Private Sub btnBearbeiten_Click()
       byteAktiv = 1
       AktivierenAlleSteuerelemente True
    End Sub
  5. Ereignis der Schaltfläche "Neu":

    Private Sub btnNeu_Click()
       byteAktiv = 1
       AktivierenAlleSteuerelemente True
    End Sub
  6. Eingabe sperren:

    Private Sub UserForm_Initialize()
       byteAktiv = 0
       AktivierenAlleSteuerelemente False
    End Sub
  7. Steuerelemente aktivieren/deaktivieren:

    Sub AktivierenAlleSteuerelemente(ByVal aktiv As Boolean)
       Dim ctrl As Control
       For Each ctrl In Me.Controls
           If TypeOf ctrl Is MSForms.TextBox Then
               ctrl.Enabled = aktiv
           End If
       Next ctrl
    End Sub

Häufige Fehler und Lösungen

  • Fehler: TextBox bleibt aktiv: Überprüfe, ob Enabled oder Locked korrekt gesetzt ist. TextBox11.Locked = True erlaubt, dass der Text angezeigt wird, aber keine Eingabe möglich ist. TextBox11.Enabled = False macht die TextBox vollständig inaktiv.

  • Fehler: Schaltflächen nicht deaktivierbar: Achte darauf, dass nur Steuerelemente wie TextBoxen und nicht Schaltflächen bearbeitet werden. Verwende die richtige Schleife für die Kontrolle.


Alternative Methoden

Eine andere Methode, um Eingaben in einer Userform zu sperren, ist die Verwendung von Visible oder das Einfügen von Labels, die anstelle der TextBoxen angezeigt werden, wenn die Eingabe deaktiviert ist. So kannst du die Userform anpassen und die Benutzererfahrung verbessern.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele zur Sperrung von Eingabefeldern:

  • Sperren bei bestimmten Aktionen: Du kannst die Eingaben auch sperren, wenn bestimmte Bedingungen erfüllt sind, z.B. wenn ein bestimmter Wert in einer anderen Zelle steht.

  • Dynamische Steuerung: Erweitere das obige Beispiel, um die Eingabe basierend auf der Auswahl in der Optionsgruppe zu steuern.

Private Sub OptionGroup_Click()
    If Me.OptionButton1.Value Then
        AktivierenAlleSteuerelemente True
    Else
        AktivierenAlleSteuerelemente False
    End If
End Sub

Tipps für Profis

  • Verwendung von Locked und Enabled: Nutze Enabled für eine klare visuelle Rückmeldung für den Benutzer, da gesperrte Steuerelemente ausgegraut werden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlungsroutine, um sicherzustellen, dass die Steuerelemente immer in einem gültigen Zustand sind, auch bei unerwarteten Benutzereingaben.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Locked und Enabled? Locked erlaubt es, dass der Text angezeigt wird, aber keine Eingabe möglich ist, während Enabled das gesamte Steuerelement deaktiviert.

2. Kann ich alle TextBoxen gleichzeitig aktivieren/deaktivieren? Ja, du kannst eine Schleife verwenden, um alle Steuerelemente gleichzeitig zu aktivieren oder zu deaktivieren. Das Beispiel in der Schritt-für-Schritt-Anleitung zeigt, wie das funktioniert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige