Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
"AfterUpdate" oder "Change" ?! Combobox
k
Hallo,
in einer Userform nutze ich eine "AfterUpdate"-Prozedure für eine Combobox. Change konnte ich hier nicht verwenden, da sonst bei jedem Buchstaben der eingegeben wird - eine MSGBox sich lädt, wenn der Datensatz nicht in der Datentabelle gefunden wird - das nervt.
Mit AfterUpdate, wartet Escel bis die Eingabe abgschlossen ist und dann einmal eine MSGBox mit dem Hinweis, dass z.B. der Datensatz noch nicht vorhanden ist und Neu angelegt werden müsste.
Aber wie kann ich bei AfterUpdate es hinbekommen, dass alle anderen Control-Elemente (Textboxen, Checkboxen etc. ) entsprechend geladen werden - OHNE Enter - sondern mit der Eingabe, bzw. bei der Nutzung der Pfeil Rauf- & Runter-Tasten, wenn man z.B. durch alle Datensätze laufen will?! Bei der Change-Variante geht es zwar, aber bei der Eingabe bekomme ich bei jedem Buchstaben dann einen MSGBoxAufruf !?
Oder Besser - kann man bei der Change-Variante etwas tun, um die Eingabe abzuwarten bis "Enter" gedrückt wird ?!
Gruß und Danke !
Kay

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: "AfterUpdate" oder "Change" ?! Combobox
27.07.2009 13:20:23
Adelhorst
hallo k.
Versuche das Ereignis '_KeyDown'. Da wird dir der KeyCode der gedrückten Taste mitgeliefert.
z.B.
Select Case KeyCode
Case 8: 'BackSpace
'Auf Taste reagieren
Case 9: 'Tab
'Auf Taste reagieren
Case 13: 'Enter
'Auf Taste reagieren
Case 37 To 40: 'Pfeiltasten
'Auf Taste reagieren
Case 46: 'Delete
'Auf Taste reagieren
End Select
oder einfacher für die Enter-Taste
If KeyCode = 13 Then 'ProzedurenAufruf'
Gruss Adelhorst
Anzeige
AW: "AfterUpdate" oder "Change" ?! Combobox
27.07.2009 16:03:49
k
Hallo leider ohne wirklichen Erfolg:
versuchte folgendes:
Private Sub CB1_Change()
If KeyCode = 13 Then 'ProzedurenAufruf'
Call CB1_AfterUpdate
Else
For i = 37 To 40
If KeyCode = i Then
Call CB1_AfterUpdate
End If
Next i
End If
End Sub
Wo ist der Fehler, bzw. wie kann ich mein Problem beheben ?!
Gruß
Kay
AW: "AfterUpdate" oder "Change" ?! Combobox
27.07.2009 21:29:58
Adelhorst
Hallo k.
Du musst es im KeyDown-Ereignis aufrufen:
Private Sub CB1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select KeyCode
Case 13
CB1_AfterUpdate
Case 37 to 40
CB1_AfterUpdate
End Select
End Sub

Gruss Adelhorst
Anzeige
AW: "AfterUpdate" oder "Change" ?! Combobox
28.07.2009 10:01:37
k
Hallo,
leider kenne ich mich noch nicht so richtig mit Select-Case Schleifen aus. Versuchte Deinen Code zu übernehmen - bekomme aber gleich eine Fehlermeldung
Select Keycode --- geht nicht ! Fehlermeldung "Erwartet Case"
Wie würde es hier richtig lauten ?!
Gruß und vielen Dank !
Kay
AW: "AfterUpdate" oder "Change" ?! Combobox
28.07.2009 12:11:55
Adelhorst
Hallo k.
Du hast recht, ich hab da etwas vergessen. Es muss wie folgt lauten:
Private Sub CB1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 13
CB1_AfterUpdate
Case 37 To 40
CB1_AfterUpdate
End Select
End Sub
Hatte es vorher nicht im VB-Editor geschreiben, sonst wäre mir der Fehler gleich aufgefallen.
Wenn du in den VisualBasic-Editor gehst, und dann auf das Tabellenblatt klickst, wo du deine ComboBox CB1 drin hast, dann musst du diese Sub dort einfügen.
Wird KeyCode= 13 oder KeyCode=(37to40) gedrückt wird die Sub 'CB1_AfterUpdate' aufgerufen.
Dein Code innerhalb der SUB war auch nicht verkehrt, aber über SelectCase ist es doch übersichtlicher.
'Select Case KeyCode' => Es wird nun die Variable KeyCode auf ihren Wert hin abgefragt.
'Case 13' => Ist KeyCode = 13, dann wird der folgende Code ausgeführt
'Case 37 to 40' => Ist KeyCode zw. 37 und 40, dann wird der folgende Code ausgeführt
'End Select' => Die Abfrage ist nun beendet
Eigentlich ganz einfach, oder?
Gruss und Sorry wegen dem Fehler.
Adelhorst
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige