excel vba find string in a string code example

Example 1: excel vba check if a string contains another string

'Use VBA's InStr() function to check
'if a string contains another:

MsgBox InStr("Excel Hero", "Hero")		'Displays: 7
MsgBox InStr("Excel Hero", "hero")		'Displays: 0
MsgBox InStr("Excel Hero", "hero", 1)	'Displays: 7 (case insensitive)

'InStr() searches from left to right and returns the position 
'of the first match found, or zero if no match is found.

'By default, InStr() starts at the first character in the first 
'string. But there is an optional first argument that specifies the
'first character to start the search at:
MsgBox InStr(5, "Excel Hero", "e")		'Displays: 8

'To search from right to left:
MsgBox InStrRev("Excel Hero", "e")		'Displays: 8
'But note that InStrRev() doe NOT have the optional first argument
'that specifies which character to start with.

'If the position is NOT important, VBA's Find operator can be used
'to determine if one string is contained in another:
MsgBox "Excel Hero" Like "*Hero"		'Displays: True

'Notice that 'Find' supports wild card characters.
'Full documentation:
'     https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/like-operator

Example 2: excel vba multiple string search with InStr function

'VBA function to check if ANY of a list of substrings is contained
'within a string:

Function AnyIn(s$, ParamArray checks()) As Boolean
    Dim e
    For Each e In checks
        If InStrB(s, e) Then AnyIn = True: Exit Function
    Next
End Function
  
'-------------------------------------------------------------------
  
MsgBox AnyIn("abcde", "o", 5, "z", "a")   '<--displays: True
MsgBox AnyIn("abcde", "o", 5, "z", "p")   '<--displays: False

Tags:

Vb Example