Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1716to1720
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

Fehlerbehandlung in der Userform

Fehlerbehandlung in der Userform
25.10.2019 10:39:44
Hans-Jürgen
Hallo Wissende,
ich baue eine Userform mit zwei Comboboxen, wobei die zweite (ComboboxAbwesenheit) erst angezeigt wird, nachdem die erste (ComboboxMitarbeiter) ein gültiges Ergebnis hat.
Der Code ist unten einkopiert. Das klappt auch ganz ordentlich, aber weil das später eine Reihe von Anwendern benutzen, habe ich versucht, mal den "DAU" zu simulieren. Das Ergebnis war ein "GAU", konkret:
- Wenn der Anwender in der ersten Box die Nullzeile auswählt oder irgendeinen Quatsch eingibt (kein gültiger Listwert), soll er ja das Feld nochmal leer präsentiert bekommen. Das klappt in der ersten Runde auch, aber wenn er das dann nochmal macht, kommt ein Laufzeitfehler "kann nicht gebunden geöffnet werden" oder so. Es muss auch nicht unbedingt so gelöst sein wie ich das gemacht habe. Es würde schon reichen, wenn die ungültige Eingabe irgendwie anders vermieden werden kann.
- Leider funktioniert der Abbrechen-Button nicht immer. Kann es sein, dass das das Ereignis nicht immer abgefragt wird? Ich hatte schon mehrfach die Sitation, dass das Formular nicht ausgegangen ist und ich Excel nur durch den Taskmanager beenden konnte
Zu Hülf! Viele Grüße und vielen Dank im voraus!
Hans-Jürgen

Private Sub Userform_Initialize()
Dim lngZähler As Long
'Formular "Abwesenheiten pflegen"
With F0_AbwesenheitenPflegen
'Namensbox vorbereiten
.ComboBoxMitarbeiter.Text = vbNullString
'Weitere Elemente zunächst ausblenden
.LabelAbwesenheit.Visible = False
.ComboBoxAbwesenheit.Visible = False
'Namen aus der Datenbank in die Liste aufnehmen
.ComboBoxMitarbeiter.AddItem vbNullString
For lngZähler = 1 To UBound(varMitarbeiter())
.ComboBoxMitarbeiter.AddItem varMitarbeiter(lngZähler, 1)
Next
End With
End Sub
Private Sub ComboboxMitarbeiter_Keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
If KeyCode = 9 Or KeyCode = 13 Then
ComboboxMitarbeiter_AfterUpdate
End If
End Sub
Private Sub ComboboxMitarbeiter_AfterUpdate()
Dim lngEintrag As Long
With F0_AbwesenheitenPflegen
'Nummer des gewählten Eintrags speichern
lngEintrag = F0_AbwesenheitenPflegen.ComboBoxMitarbeiter.ListIndex
'Wenn Eintrag gültig, nächste Abfrage starten, sonst zurücksetzen
If lngEintrag > 0 Then
.LabelAbwesenheit.Visible = True
.ComboBoxAbwesenheit.Visible = True
'hier kommt die nächste Combobox hin
'.ComboBoxAbwesenheit.Text = "Neue Abwesenheit erfassen"
Else
Application.EnableEvents = False
.ComboBoxMitarbeiter.Text = vbNullString
Unload F0_AbwesenheitenPflegen
Application.EnableEvents = True
.Show
End If
End With
End Sub
Private Sub ButtonÜbernehmen_Click()
MsgBox "wird später definiert"
End Sub
Private Sub ButtonAbbrechen_Click()
Unload F0_AbwesenheitenPflegen
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Fehlerbehandlung in der Userform
25.10.2019 11:03:13
Hans-Jürgen
Ergänzung:
Von dem Keydown-Ereignis möchte ich ungern weg. Hintergrund: Die Anwender sind es gewohnt, die ersten Buchstaben des Nachnamens zu tippen, und da ist die Funktion der Combobox stark, dass der passende Eintrag gleich ausgewählt wird.
AW: Fehlerbehandlung in der Userform
25.10.2019 11:54:18
Werner
Hallo Hans-Jürgen,
und was bitte hat das mit dem Keydown zu tun? Das ist die Standardeinstellung einer Combobox.
Gruß Werner
AW: Fehlerbehandlung in der Userform
25.10.2019 12:01:35
Hans-Jürgen
Hallo Werner,
wie gestern besprochen, wollte ich zulassen, dass der Anwender ein paar Buchstaben in die Combobox eingibt. Nicht, weil er "ungenehmigten Inhalt" erfast, sondern weil er auf diesem Wege direkt einen Listeintrag anspringen kann.
Weil die _Change mir hier nichts hilft (die wurde schon beim ersten Anschlag ausgeführt) habe ich mich für _AfterUpdate entschieden. Dafür brauche ich das KeyDown, um bei der Freitexteingabe den Tabulator und das Enter abzufragen (das sind die genannten Tasten)
Vielen Dank
Hans-Jürgen
Anzeige
AW: Fehlerbehandlung in der Userform
25.10.2019 12:14:48
Werner
Hallo Hans-Jürgen,
noch mal die Frage: Was hat das mit dem Keydown der Combobox zu tun.
In der beiliegenden Mappe sind in der Combobox1 die Einträge Heute / ist / ein / schöner / Tag / die / Sonne / scheint
Gib in die Combobox1 einen Buchstaben ein, ist er als Anfangsbuchstabe eines eingetragenen Begriffes vorhanden, dann wird dieser angezeigt. Das ist die Standardeinstellung der Combobox und geht ohne irgendeinen Code.
Durch die Eingabe weiterer Buchstaben wird entsprechend weiter eingeschränkt und der passende Eintrag angezeigt.
Hast du den passenden Eintrag "gefunden" wird dieser über das AfterUpdate der Combobox1 bei Betätigen von Enter oder Tab in die Textbox2 übertragen.
Das funktioniert genauso, wenn du einen Begriff in Combobox1 einträgst, der in der Auswahl der Combobox nicht vorhanden ist.
Irgendein Wort eintragen Enter oder Tab überträgt den eingegebenen Wert in Combobox2.
Wenn du was anderes willst, dann weiß ich leider nicht was.
https://www.herber.de/bbs/user/132746.xlsm
Gruß Werner
Anzeige
AW: Fehlerbehandlung in der Userform
25.10.2019 15:02:57
Hans-Jürgen
Hallo Werner,
genau das wollte ich, vielen Dank, Themaa gelöst!
Ich hatte mich total vergalloppiert, und da war es gut, nochmal das Ganze von Grund auf aufzubauen.
Viele Grüße
Hans-Jürgen
Gerne u. Danke für die Rückmeldung. o.w.T.
25.10.2019 15:08:35
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige