Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1544to1548
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

Userform Eingabenüberprüfung

Userform Eingabenüberprüfung
13.03.2017 15:29:02
Kaan
Hallo liebe VBA Experten!
Ich habe eine Userform erstellt die mehrere Textboxen, Comboboxen und Listboxen enthält.
Zum Schluss habe ich einen Commandbutton eingefügt, mit dem alle Boxen überprüft werden sollen, ob etwas drin steht. Falls nicht, gibt mir der Code eine MsgBox aus, die den User auf den Fehler hinweist.
Mein Code funktioniert zwar, aber im Laufe der Userform (je nachdem was der User in verschiedenen Comboboxen auswählt) werden verschiedene TextBoxen ausgeschaltet (TextBox.Enabled = False).
Nun würde ich gerne alle Boxen, die ausgeschaltet sind, von der Überprüfung des Inhalts ausschließen.
Ich habe es bis jetzt nicht bewerkstelligen können, also wende ich mich an euch.
Hier ist noch der Code zur Überprüfung, ob in den boxen ein Inhalt enthalten ist:
Private Sub FertigstellenCommandButton_Click()
Dim objtxt As Object
For Each objtxt In BestandsverwaltungUserForm.Controls
If TypeName(objtxt) = "TextBox" _
Or (TypeName(objtxt) = "ComboBox") _
Or (TypeName(objtxt) = "ListBox") _ Then
If objtxt.Value = "" Then
MsgBox "Es wurden nicht alle Felder ausgefüllt!", vbCritical, "Fehlermeldung"
Exit Sub
End If
End If
Next
If MsgBox("Wollen Sie Ihre Eingaben noch ein mal überprüfen?", vbYesNo + vbQuestion, "Überprü _
fung") = vbYes Then
Exit Sub
Else
MsgBox ("Ende")
End If
End Sub
Mit diesem Code kriege ich bislang eine Fehlermeldung, obwohl alle Boxen ausgefüllt sind die eingeschaltet sind.
Ich hoffe ihr könnt mir helfen.
Mit freundlichen Grüßen,
Kaan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
If objtxt.Enabled = True... owT
13.03.2017 15:41:01
Max2

AW: If objtxt.Enabled = True... owT
13.03.2017 15:51:14
Kaan
Hallo Max2,
das ist sehr Interessant. Auf den gleichen Ansatz bin ich auch schon gekommen, hat mir aber immer eine Fehlermeldung aller "If ohne End If" ausgegeben, weshalb ich das nicht weiter versucht habe.
Mein Fehler war wohl, dass ich "If objtxt.enabled = True Then" vor die For .. Next schleife gepackt habe. Als ich es in die For .. Next Schleife implementiert habe, hats funktioniert.
Also danke für deine Hilfe, ich würde wohl sonst noch Morgen daran sitzen!
Mit freundlichen Grüßen,
Kaan
es kommt keine Fehlermeldung bei mir
13.03.2017 15:51:17
Matthias
Hallo
Auch wenn ich eine Textbox ausschalte (siehe Bild)
kommt keine Fehlermeldung bei mir
Userbild
Gruß Matthias
Anzeige
AW: es kommt keine Fehlermeldung bei mir
13.03.2017 16:01:03
Kaan
Hallo Matthias L!
Ich habe mich leider etwas umständlich ausgedrückt. Mit Fehlermeldung meinte ich meine, von mir programmierte, MessageBox, die bei einer leeren Box etwas ausgibt wie "Es wurden noch nicht alle Felder ausgefüllt!"
Dennoch wundert es mich, dass eben diese nicht bei dir auftaucht.
Ich habe es vorher nicht erwähnt, weil ich dachte es wäre irrelevant, aber du hast hier eine einfache Userform erstellt, die einige Boxen enthält.
Meine Userform enthält noch eine 4 Seitige Multipage, auf die alle Boxen verteilt sind.
Kann die Multipage den Fehler verursacht haben?
Also das Problem ist mittlerweile zwar gelöst (durch "If objtxt.Enabled = True Then [...]"), es wäre dennoch interessant für zukünftige Arbeiten zu wissen.
Mit freundlichen Grüßen,
Kaan
Anzeige
Also das Problem ist mittlerweile zwar gelöst ...
13.03.2017 16:20:19
Matthias
Hallo
Ja ich hab den Beitrag auch gelesen.
Auch wenn ich die Textboxobjekte auslagere in eine Multipage
kommt keine Fehlermeldung.
Was mich aber wundert das auch bei leerer Listbox der Code durchläuft
auch ohne die gewünschte Meldung.
Userbild
Die durchlaufenden Objekte mit deren Valuewert: mit Debug.Print
ComboBox1: Valuewert = -> 1
ListBox1: Valuewert = ->
TextBox1: Valuewert = -> Text1
TextBox2: Valuewert = -> Text2
TextBox3: Valuewert = -> aus
Im Code so hinterlegt:
Option Explicit
Private Sub CommandButton1_Click()
Dim objtxt As Object
For Each objtxt In BestandsverwaltungUserForm.Controls
If TypeName(objtxt) = "TextBox" Or (TypeName(objtxt) = "ComboBox") Or (TypeName(objtxt) = " _
ListBox") Then
Debug.Print objtxt.Name & ": Valuewert = -> " & objtxt.Value
If objtxt.Value = "" Then
MsgBox objtxt.Name & " ist leer"
MsgBox "Es wurden nicht alle Felder ausgefüllt!", vbCritical, "Fehlermeldung"
Exit Sub
End If
End If
Next
If MsgBox("Wollen Sie Ihre Eingaben noch ein mal überprüfen?", vbYesNo + vbQuestion, "Überprü _
fung ") = vbYes Then
Exit Sub
Else
MsgBox ("Ende")
End If
End Sub
Gruß Matthias
Anzeige
AW: Meine Version des Codes
15.03.2017 10:41:22
Kaan
Hallo Matthias!
Ich habe zwar schon einen funktionierenden Code, aber ich weiß deine Mühen zu schätzen.
Falls es dich interessiert, der Code mit dem ich momentan arbeite sieht so aus:
Private Sub FertigstellenCommandButton_Click()
Dim objtxt As Object
For Each objtxt In BestandsverwaltungUserForm.Controls
If objtxt.Enabled = True Then
If TypeName(objtxt) = "TextBox" _
Or (TypeName(objtxt) = "ComboBox") _
Or (TypeName(objtxt) = "ListBox") _
Or (TypeName(objtxt) = "OptionButton") Then
If objtxt.Value = "" Then
MsgBox "Es wurden nicht alle Felder ausgefüllt!", vbCritical, "Fehlermeldung"
Exit Sub
End If
End If
End If
Next
If MsgBox("Wollen Sie Ihre Eingaben noch ein mal überprüfen?", vbYesNo + vbQuestion, "Überprü _
fung") = vbYes Then
Exit Sub
Else
MsgBox ("Ende")
End If
End Sub

Natürlich ist das nur ein kleiner Teil des Gesamtcodes, aber er erfüllt seinen Zweck. Er überprüft alle aktivierten Boxen und gibt bei Bedarf eine Fehlermeldung aus.
Mit freundlichen Grüßen,
Kaan
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige