Wie kann man in Excel-VBA mehrere If-bedingungen, die die selbse Reaktion auslösen sollen, zusammenfassen?
Ich habe in VBA eine Userform erstellt. Es handelt sich hierbei um eine Eingabemaske, die mehrere Textboxen enthält, die mit Werten ausgefüllt werden müssen. Das funktioniert soweit recht gut, aber ich möchte noch folgende Funktionalität ergänzen. Un zwar: Wird eines der Felder ausgelassen, soll die MsgBox erscheinen mit dem Hinweis, dass alle Felder ausgewählt werden müssen. Das ist bei einem Feld kein Problem:
If TextBox1.Value = "" Then MsgBox "Alle Felder müssen ausgefüllt werden" Exit Sub End If
Ich suche jetzt aber nach der Möglichkeit, wie ich die If-Then Struktur so umändern kann, dass die MsgBox erscheint, sobald eine oder mehrere der 10 Textboxen der Userform leergelassen werden.
2 Antworten
Hey, folgender Code sollte eigentlich dein Problem lösen. Hier wird geprüft ob auch alle Textfelder gefüllt sind, wenn nicht kommt eine Meldung. Das Unload Me in dem Code musst du dann durch deinen Code ersetzen und eventuell auch den namen deiner UserForm:
Dim objtxt As Object
For Each objtxt In UserForm1.Controls
If TypeName(objtxt) = "TextBox" Then
If objtxt.Value = "" Then
MsgBox " Es wurden nicht alle Textfelder ausgefüllt.!", 48
objtxt.SetFocus
Exit Sub
End If
End If
Next
Unload Me
Klappt es?
Du kannst mit einer For-Each-Schleife alle Textboxen eines Forms durchsuchen und deren Wert abfragen.
Dazu kreierst du dir eine boolsche Variable, die sich merkt, ob alle einen Wert haben:
bAllesBefuellt = bAllesBefuellt and (txtCurrent.Value <> "")
Achso, wie das geht mit For-Each: http://www.ozgrid.com/VBA/control-loop.htm