AutoCompleter – Class Module

By | 2002-06-01

This code allows you to have an autocomplete function on any text boxes by creating an instance of the class module below and setting a text control on a form to is CompleteTextbox property. Ideal for those situations when you have multiple autocompletes. (Visual Basic 6 Only – Can easily be modified for 5.0 users)

Original Author: dmbbob

Inputs


Dim m_objAutoCompleteUser as clsAutoComplete
Set m_objAutoCompleteUser = New clsAutoComplete
With m_objAutoCompleteUser
.SearchList = m_strUserList
Set .CompleteTextbox = txtUser
.Delimeter = “,”
End With

Assumptions

Create a new class module.
Paste all the code below into it.
Rename the module to clsAutoComplete.

Code

Option Explicit
Private WithEvents m_txtComplete As TextBox
Private m_strDelimeter As String
Private m_strList As String
Private Sub m_txtComplete_KeyUp(KeyCode As Integer, Shift As Integer)

Dim i As Integer
Dim strSearchText As String
Dim intDelimented As Integer
Dim intLength As Integer
Dim varArray As Variant

With m_txtComplete
  If KeyCode <> vbKeyBack And KeyCode > 48 Then  
   If InStr(1, m_strList, .Text, vbTextCompare) <> 0 Then
      
    varArray = Split(m_strList, m_strDelimeter)

    For i = 0 To UBound(varArray)
     strSearchText = Trim(varArray(i))

     If InStr(1, strSearchText, .Text, vbTextCompare) And  
      (Left$(.Text, 1) = Left$(strSearchText, 1)) And
      .Text <> "" Then
      .SelText = ""
      .SelLength = 0
      intLength = Len(.Text)
      .Text = .Text & Right$(strSearchText, Len(strSearchText) - Len(.Text))
      .SelStart = intLength
      .SelLength = Len(.Text)
      Exit Sub
     End If

    Next i
   End If
  End If
End With

End Sub
Public Property Get CompleteTextbox() As TextBox
Set CompleteTextbox = m_txtComplete
End Property
Public Property Set CompleteTextbox(ByRef txt As TextBox)
Set m_txtComplete = txt
End Property
Public Property Get SearchList() As String
SearchList = m_strList
End Property
Public Property Let SearchList(ByVal str As String)
m_strList = str
End Property
Public Property Get Delimeter() As String
Delimeter = m_strDelimeter
End Property
Public Property Let Delimeter(ByVal str As String)
m_strDelimeter = str
End Property

Author: dwirch

Derek Wirch is a seasoned IT professional with an impressive career dating back to 1986. He brings a wealth of knowledge and hands-on experience that is invaluable to those embarking on their journey in the tech industry.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.