Я использую следующую функцию.Он не самый эффективный в использовании памяти, но его очень просто понять, он поддерживает несколько методов сравнения, всего 4 строки, быстрый, в основном работает и в VBA, найдет не только отдельные символы, но и любую строку поиска (я часто ищу VbCrLf(s)).
Единственное, чего не хватает, так это возможности начать поиск с другого «Пуска»
Function inStC(myInput As String, Search As String, Optional myCompareMethod As Long = CompareMethod.Text) As Long
If InStr(1, myInput, Search, myCompareMethod) = 0 Then Return 0
Return UBound(Split(myInput, Search,, myCompareMethod))
End Function
Мне нравится то, что он компактен в использовании.
str="the little red hen"
count=inStC(str,"e") 'count should equal 4
count=inStC(str,"t") 'count should equal 3
Пока я здесь, я хотел бы проиллюстрировать мою функцию inStB, которая вместо возврата количества строк просто возвращает логическое значение, если строка поиска присутствует.Мне часто нужна эта функция, и это делает мой код чище.
Function inStB(myInput As String, Search As String, Optional Start As Long = 1, Optional myCompareMethod As Long = CompareMethod.Text) As Boolean
If InStr(Start, myInput, Search, myCompareMethod) > 0 Then Return True
Return False
End Function