【VBA】文字列が指定された文字列で始まる、または終わるか確認する

VBAで対象の文字列が指定した文字で始まっているか、または終わっているかを確認するFunctionを作成してみます。

文字列が指定された文字列で始まるか確認する

対象の文字列が指定した文字で始まっているか確認するFunctionです。

 1Public Function StartsWith(target_str As String, search_str As String) As Boolean
 2'###################################################################################
 3'target_str文字列がsearch_str文字列で始まっているか確認する
 4'search_strで始まっている場合はTrue
 5'search_strで始まっていない、もしくはsearch_strがtarget_strの文字数を超える場合はFalseを返す
 6'###################################################################################
 7  
 8  If Len(search_str) > Len(target_str) Then
 9    Exit Function
10  End If
11  
12  If Left(target_str, Len(search_str)) = search_str Then
13    StartsWith = True
14  End If
15
16End Function

作成したStartsWithをテストしてみると以下の結果が帰ってきます。

 1Public Sub TestStartsWith()
 2  'StartsWithのテスト
 3  
 4  Dim targetStr As String
 5  targetStr = "あいうえお"
 6  
 7  Debug.Print StartsWith(targetStr, "あ")   'True
 8  Debug.Print StartsWith(targetStr, "あい") 'True
 9  Debug.Print StartsWith(targetStr, "かき") 'False
10  Debug.Print StartsWith(targetStr, "あいうえおか") 'False(検索対象文字列より検索文字列が長いため)
11
12End Sub

文字列が指定された文字列で終わるか確認する

対象の文字列が指定した文字で終わっているか確認するFunctionです。

 1Public Function EndsWith(target_str As String, search_str As String) As Boolean
 2'###################################################################################
 3'target_str文字列がsearch_str文字列で終わっているか確認する
 4'search_strで終わっている場合はTrue
 5'search_strで終わっていない、もしくはsearch_strがtarget_strの文字数を超える場合はFalseを返す
 6'###################################################################################
 7  
 8  If Len(search_str) > Len(target_str) Then
 9    Exit Function
10  End If
11  
12  If Right(target_str, Len(search_str)) = search_str Then
13    EndsWith = True
14  End If
15
16End Function

作成したEndsWithをテストしてみると以下の結果が帰ってきます。

 1Public Sub TestEndsWith()
 2  'EndsWithのテスト
 3  
 4  Dim targetStr As String
 5  targetStr = "あいうえお"
 6  
 7  Debug.Print EndsWith(targetStr, "お") 'True
 8  Debug.Print EndsWith(targetStr, "えお") 'True
 9  Debug.Print EndsWith(targetStr, "けこ") 'False
10  Debug.Print EndsWith(targetStr, "あいうえおか") 'False(検索対象文字列より検索文字列が長いため)
11
12End Sub

関連ページ