Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textfelder Userform Button Enabeled

Textfelder Userform Button Enabeled
25.10.2015 10:40:22
Noureddine

Hallo zusammen,
ich habe eine Userform mit mehrern Textfeldern. Ich möchte gerne, solang eins dieser Felder noch leer stehen, das mein Button nicht anklickbar ist. Nur wenn alle befüllt sind.
Danke vorab für Eure Hilfe.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfelder Userform Button Enabeled
25.10.2015 10:54:35
Hajo_Zi

Private Sub CMD_Leeren_Click()
Dim ObCb As Object
CMD_Druck.Enabled = True
For Each ObCb In Me.Controls
If TypeName(ObCb) = "TextBox" Then
If ObCb = "" Then
CMD_Druck.Enabled = False
End If
End If
Next ObCb
End Sub

AW: Textfelder Userform Button Enabeled
25.10.2015 10:59:04
Hajo_Zi
Du musst den Code bei jedem Change der Textbox ausführen oder Du hast Klassen.
Gruß Hajo

AW: Textfelder Userform Button Enabeled
25.10.2015 11:04:53
Beverly
Hi,
setze die Eigenschaft des CommandButtons Enabled auf False und schreibe in die Tag-Eigenschaft des CommandButtons eine 0. Mit folgendem prinzipiellen Code (für jede der TextBoxen) wird bei jedem Eintrag in eine der TextBoxen der Zähler hochgesetzt und wenn der Zähler der Anzahl der TextBoxen entspricht wird der CommandButton aktiv
Private Sub TextBox1_Change()
If TextBox1 <> "" Then
CommandButton1.Tag = CLng(CommandButton1.Tag) + 1
Else
CommandButton1.Tag = CLng(CommandButton1.Tag) - 1
End If
If CLng(CommandButton1.Tag) = 3 Then  '<== Anzahl anpassen
CommandButton1.Enabled = True
Else
CommandButton1.Enabled = False
End If
End Sub


Anzeige
AW: Textfelder Userform Button Enabeled
25.10.2015 13:24:29
Daniel
HI
ich würde da am Anfang des ClickEvents des Buttons eine Prüfung einbauen die abfragt, ob alle Textboxen befüllt sind und nur wenn ja, den Code ausführen
das ist am einfachsten und am sichersten, weil du diesen Code dann nur einmal brauchst und nicht für jede Textbox erneut.
im Prinzip so:
PrivateSub Commandbutton1_Click()
dim AlleTextboxenBefüllt as boolean
AlleTextboxenBefüllt = True
if Textbox1.Text = "" then AlleTextboxenBefüllt = False
if Textbox2.Text = "" Then AlleTextboxenBefüllt = False
... usw für alle relevanten Textboxen
if AlleTextboxenBefüllt Then
... hier dier Code der normalerweise ablaufen soll wenn der Button geklickt wird
Else
msgbox "Bitte erst alle Textboxen ausfüllen", vbCritical
End If
End Sub
Gruss Daniel

Anzeige
AW: Schmalspur noch schmaler
25.10.2015 14:20:51
Gerd L
Hi,
weshalb alle weiteren Textboxen auf "leer" prüfen, wenn ggf. schon eine Prüfung dieses Ergebnis hatte?
In solchen Fällen bastelt man eine Schleife mit Ausstieg.
Gruß Gerd

AW: Schmalspur noch schmaler
25.10.2015 14:42:17
Daniel
Hi
ganz einfach:
weils bei den 10 oder 20 Textboxen die da zu prüfen sind wurscht ist, ob man sofort abbricht oder alle durchtestet.
ausserdem funktioniert das mit der Schleife nicht mehr so einfach, wenn man seinen Objekten sprechende Namen gibt.
Gruss Daniel

AW: Schmalspur noch schmaler
25.10.2015 14:42:17
Daniel
Hi
ganz einfach:
weils bei den 10 oder 20 Textboxen die da zu prüfen sind wurscht ist, ob man sofort abbricht oder alle durchtestet.
ausserdem funktioniert das mit der Schleife nicht mehr so einfach, wenn man seinen Objekten sprechende Namen gibt.
Gruss Daniel

Anzeige
AW: Schmalspur noch schmaler
25.10.2015 16:23:36
Noureddine
Ist hab mal diesen Code von Sepp bekommen, das gilt jedoch nur für Checkboxen. Ich hab mir sowas halt für Textboxen auch vorgestellt....

' Modul: UserForm1 Typ: Userform
Option Explicit
Private Sub CheckBox1_Click()
CheckAll
End Sub
Private Sub CheckBox2_Click()
CheckAll
End Sub
Private Sub CheckBox3_Click()
CheckAll
End Sub
Private Sub CheckBox4_Click()
CheckAll
End Sub
Private Sub CheckBox5_Click()
CheckAll
End Sub
Private Sub CheckAll()
CommandButton1.Enabled = CheckBox1 Or CheckBox2 Or CheckBox3 Or CheckBox4 Or CheckBox5
End Sub
Private Sub UserForm_Initialize()
CommandButton1.Enabled = False
End Sub

Anzeige
AW: Schmalspur noch schmaler
25.10.2015 18:38:34
Daniel
Hi
funktioniert im Prinzip genauso
nur dass du eben satt:
Commandbutton1.Enabled = Checkbox1 or Checkbox2 or ....
dann schreiben musst
Commandbutton1.Enabeled = (Textbox1.Text <> "") AND (Textbox1.Text <> "") AND (Textbox3.Text <> "")...
und das das auslösenden Element für CheckALL nicht das Click-Event der Textboxen ist, sondern das Change-Event.
ich bleibe aber dabei:
ich würde den Commandbutton permanent Enaabled lassen und die Prüfung beim Click auf den Commandbutton ausführen.
das ist einfacher, weil du dann die prüfung nicht bei jeder Änderung in den Textboxen auführen musst und damit deine ganzen Change-Events entfallen, mit welchen du das CheckAll aufrufen musst.
Ausserdem hast du dann zusätzlich die Möglichkeit, den Anwender mit einer Messagebox darüber zu informieren, warum sein Clickmakro jetzt noch nicht ausgeführt werden kann und was er noch tun muss.
Im anderen Fall fragt sich ein unerfahrener Anwender vielleicht, warum der "blöde" Button nicht endlich aktiv wird ohne dass er eine Information bekommt, was er tun muss.
gruss Daniel

Anzeige
AW: Schmalspur noch schmaler
25.10.2015 19:31:00
Noureddine
Vielen Dank.... ich werd´s versuchen...
Da hast du wohl recht, es ist benutzerfreundlicher...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige