By default, VB list boxes use any keyboard input to find the firstitem beginning with the pressed letter. Where the number of itemsin a list box is large (>100), this is not helpful. Substitutinga binary or hybrid search for the sequential search below speedsup the algorithm substantially for very large lists (>1000items). The code below searches the items in a sorted list boxbased on all the characters typed by the user:
Global ListBoxSearch$Sub ListBox_KeyPress (KeyAscii As _ Integer) 'Return KeyAscii in case you 'want VB to handle certain charsKeyAscii = SearchListBox_ (Me.ActiveControl, KeyAscii)End SubFunction SearchListBox _ (CurrentActiveControl As Control, _ KeyAscii As Integer) Dim ListBoxIndex As Integer Dim Result As Integer 'Result of string compare ListBoxSearch$ = ListBoxSearch$ & _ Chr$(KeyAscii) ListBoxIndex = CurrentActive_ Control.ListIndex While ListBoxIndex
Note: Clearly, the code above is not complete and needs to beaugmented to suit the individual developer. For example, whento clear ListBoxSearch$ is a subject of much consideration (activecontrol changes, user presses arrow keys, and so forth) I implementedthe above scheme on a list of >1500 items with a separate ClearLBSearchsubroutine and a binary/sequential hybrid searching algorithm.