Listenauswahl mit Tastencodes optimieren

Alle Spalten durchsuchen

Bei Listen mit sehr vielen Spalten können Sie dem Benutzer noch mehr Komfort bieten, indem Sie ihm die Möglichkeit geben, alle Spalten zu durchsuchen. Dazu müssen Sie beim Abgleich zwischen dem eingegebenen Text und dem Inhalt der Spalte nur alle Spalten nacheinander abarbeiten. Dafür müssen Sie in diesem Fall auch keine Spaltennummer an die Funktion übergeben. Der Aufruf der Funktion erfolgt analog zur vorherigen, nur dass Sie hier keine Spaltennummer als Parameter übergeben.

Function getIndex_allespalten(objContr As ComboBox, strWert As String)
Dim lngZeile As Long
Dim lngSpalte As Long
For lngSpalte = 2 To objContr.ColumnCount
'Exakte übereinstimmung suchen
For lngZeile = 0 To objContr.ListCount - 1
If UCase(Trim(strWert)) = UCase(Trim(objContr.Column(lngSpalte, _
lngZeile))) Then
getIndex_allespalten = lngZeile
objContr.Text = objContr.Column(1, lngZeile)
objContr.ListIndex = lngZeile
Exit Function
End If
Next lngZeile
'Anfang des Wertes suchen
For lngZeile = 0 To objContr.ListCount - 1
If InStr(1, UCase(Trim(objContr.Column(lngSpalte, lngZeile))), _
UCase(Trim(strWert))) = 1 Then
getIndex_allespalten = lngZeile
objContr.ListIndex = lngZeile
objContr.Text = objContr.Column(1, lngZeile)
Exit Function
End If
Next lngZeile
Next lngSpalte
End Function

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