Class: FuzzyStringSearch in Category General VBA/VB6 : Searching and Sorting from Total Visual SourceBook

Approximate text matching using fuzzy string searching in VBA and VB6.

Procedure Name Type Description
(Declarations) Declarations Declarations and private variables for the CFuzzyStringSearch class.
CaseSensitive Property Determine whether or not the search is case sensitive. This property must be set before the FindText and Text properties.
FindText Property Get the search text.
MaxCharacterDifference Property Get the maximum number of different characters allowed for a match.
Text Property Get the text that is being searched.
Class_Initialize Initialize Set initial values to defaults which may be overridden with property settings.
FindNext Method Finds the next matching string. This function increments the index into the search buffer each time it is called. To begin searching from the beginning of the search buffer, call the Reset method.
Reset Method Reset the search.
' Example of CFuzzyStringSearch
' To use this example, create a new module and paste this code into it.
' Then run the procedure by putting the cursor in the procedure and pressing:
'    F5 to run it, or
'    F8 to step through it line-by-line (see the Debug menu for more options)

Public Sub Example_CFuzzyStringSearch()
  ' Comments: Example of using class CFuzzyStringSearch to perform fuzzy string searching in VBA and VB6.
  '           See the results in the Immediate Window.

  Const cstrText As String = "Apples apricots bananas blueberries cherries kiwi peaches pears pineapples raspberries strawberries"
  Dim clsFuzzyStringSearch As CFuzzyStringSearch
  Dim lngFindStart As Long
  Dim lngFindLength As Long
  Dim intDifferences As Integer
  Dim intLoop As Integer
  Dim strFind As String

  Set clsFuzzyStringSearch = New CFuzzyStringSearch

  With clsFuzzyStringSearch
    ' Set whether it's case sensitive or insensitive searching before loading the text
    .CaseSensitive = True
    .MaxCharacterDifference = 1

    ' Text to be searched
    .Text = cstrText

    ' Search for a different term in each loop
    For intLoop = 1 To 4
      ' Text to find
      Select Case intLoop
        Case 1
          strFind = "apples"
        Case 2
          strFind = "apple"
        Case 3
          strFind = "aple"
        Case 4
          strFind = "berry"
      End Select

      .FindText = strFind

      ' Keep searching the string for each occurrence
      Debug.Print "Search for: " & strFind
      Do While .FindNext(lngFindStart, lngFindLength, intDifferences)
        ' Show the character where it's found and the number of character differences
        Debug.Print lngFindStart, intDifferences, Mid$(cstrText, lngFindStart, lngFindLength)

      ' Reset for next search so it starts from the beginning
    Next intLoop
  End With

  Set clsFuzzyStringSearch = Nothing

End Sub

Total Visual SourceBook The source code in Total Visual Sourcebook includes modules and classes for Microsoft Access, Visual Basic 6 (VB6), and Visual Basic for Applications (VBA) developers. Easily add this professionally written, tested, and documented royalty-free code into your applications to simplify your application development efforts.

Total Visual SourceBook is written for the needs of a developer using a source code library covering the many challenges you face. Countless developers over the years have told us they learned some or much of their development skills and tricks from our code. You can too!

Additional Resources

Total Visual SourceBook CD and Printed Manual

Microsoft Access/ Office 2016, 2013, 2010, and 2007 Version
is Shipping!

New features in Total Visual SourceBook for Access, Office and VB6

Supports Access/Office 2016, 2013, 2010 and 2007, and Visual Basic 6.0!

View all FMS products for Microsoft Access All Our Microsoft Access Products


Reader Choice Award for MS Access Source Code Library
Reader Choice

"The code is exactly how I would like to write code and the algorithms used are very efficient and well-documented."

Van T. Dinh, Microsoft MVP

SourceBook Info

Additional Info




Free Product Catalog from FMS