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) Loop Debug.Print ' Reset for next search so it starts from the beginning .Reset Next intLoop End With Set clsFuzzyStringSearch = Nothing End Sub
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!
Supports Access/Office 2016, 2013, 2010 and 2007, and Visual Basic 6.0!
"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