Listenauswahl mit Tastencodes optimieren

Funktion aufrufen

Nun müssen Sie natürlich noch dafür sorgen, dass die Funktion aufgerufen wird. Dazu benötigen Sie die Ereignisprozedur für das Ereignis NotInList. Damit das Ereignis eintritt, sind wiederum ein paar Einstellungen notwendig.

  1. Markieren Sie das Kombinationslistenfeld in der Entwurfsansicht des Formulars.

  2. Aktivieren Sie im Eigenschaftenfenster die Registerkarte Daten.

  3. Setzen Sie die Eigenschaft Nur Listeneinträge auf Ja.

  4. Erstellen Sie nun auf der Registerkate Ereignis eine Ereignisprozedur für das Ereignis Bei Nicht in Liste und ergänzen Sie sie wie in Listing 4.

Private Sub Typ_NotInList(NewData As String, Response As Integer)
getIndex 2, Me.Typ, NewData
Response = acDataErrContinue
End Sub

Als Werte übergeben Sie die Nummer der zu durchsuchenden Spalte (hier 2), das Steuerelement, in dessen Ereignisprozedur der Aufruf stattfindet, und den Parameter NewData der Ereignisprozedur.

Bild 2: Der gefundene Eintrag wird markiert, die Liste bleibt geöffnet.
Bild 2: Der gefundene Eintrag wird markiert, die Liste bleibt geöffnet.

Gibt der Benutzer nun einen Wert ein, der nicht in der erste Spalte gefunden wird, und drückt [Enter] oder [Tab], tritt das Ereignis NotInList ein. Die Funktion getIndex durchsucht nun die zweite Spalte nach einer Übereinstimmung. Kann sie gefunden werden, wird der Eintrag in der Liste markiert (Bild 2). Die Liste wird jedoch nicht geschlossen. Das hat den Vorteil, dass der Benutzer die Auswahl noch einmal prüfen und gegebenenfalls korrigieren kann. Durch erneutes Drücken von [Enter] oder [Tab] wird die Eingabe übernommen.