Ich habe eine Userform mit einer Listbox (Mitarbeiternamen) und mehreren dazugehörenden Textboxen (Name, Vorname, Position etc.). Durch Setzen von Listbox.Index = 1 wird beim Aufruf der Userform der erste Eintrag ausgewählt.
Ich möchte sicherstellen, dass der Anwender keinen Eintrag der Listbox auswählen kann, bevor nicht alle Textboxen des zuletzt gewählten Items ausgefüllt sind. Bei der Auswahl eines Listbox-Items soll ggf. eine MsgBox erscheinen, die auf die fehlenden Angaben hinweist, danach soll das vom Anwender soeben ausgewählte Item der Listbox (Mitarbeitername) deselektiert und der zuvor dargestellte Mitarbeiter in der Listbox wieder ausgewählt werden, damit die Textboxen ergänzt werden können.
Leider habe ich mit allen Events (_Click, _Change, _MouseUp) bisher keine befriedigende Lösung hinbekommen. Speziell das Deselektieren des Items mit Listbox.Selected(Listbox.ListIndex) = False und Auswählen des zuvor aktiven Items klappt nicht, weil durch Setzen von Listbox.Index auf den vorherigen Wert jeweils erneut _Click bzw. _Change-Ereignisse ausgelöst werden.
Code-Beispiel:
Private Sub ListBox_Click()
If TextBox.Value = "" Then
Call MsgBox("Bitte die noch fehlenden Angaben ergänzen!")
' hier müsste die Listbox den ausgewählten Eintrag deselektieren und den zuvor
' aktiven Eintrag wieder auswählen
Exit Sub
End If
' Textboxen des zuvor markierten Mitarbeiters vollständig, bearbeite deshalb den
' vom Anwender ausgewählten Mitarbeiter (Listbox.ListIndex)
End Sub
Hat jemand eine Idee? Freue mich über jeden Hinweis, weil ich schon ein paar Tage erfolglos herumbastele.
Oliver