I believe this is the smallest and fastest function you will find over there
It behaves like an inStr extension, of where it’s based on.
'############################################################################### 'Count the number of occurrences of one string inside another 'Optional parameters: ' optCompare: 0=vbBinaryCompare (default) or 1=vbTextCompare ' start: Start position where search will begin, defaults to 1. 'Version 1.0.0 100214 Marcelo Gennari '############################################################################### Public Function inStrCount(haystack As String, needle As String, _ Optional optCompare As Integer = 0, Optional start As Long = 1) As Long Dim lastFound As Long Dim lenNeedle As Integer Dim rtn As Long If haystack = "" Then Exit Function lenNeedle = Len(needle) lastFound = InStr(start, haystack, needle, optCompare) Do While lastFound > 0 rtn = rtn + 1 lastFound = InStr(lastFound + lenNeedle, haystack, needle, optCompare) Loop inStrCount = rtn End Function Public Sub inStrCountTest() Debug.Print "Result x Expected = " & inStrCount("aca", "a") & " x 2" Debug.Print "Result x Expected = " & inStrCount("aaa", "a") & " x 3" Debug.Print "Result x Expected = " & inStrCount("aaccaaa", "aa") & " x 2" Debug.Print "Result x Expected = " & inStrCount("aaccaaaa", "aa") & " x 3" Debug.Print "Result x Expected = " & inStrCount("aaa", "aaaa") & " x 0" End Sub
Comentários