指定文字と指定文字の間の文字列を取得する関数

タイトルのマクロです。

'**************************************
'* 指定文字と指定文字の間の文字列を取得
'* originalString:対象文字列
'* startTxt:この文字以降を取得
'* endTxt:この文字以前を取得
Private Function ExtractSubstring(ByVal originalString As String _
        , ByVal startTxt As String _
        , ByVal endTxt As String) As String
    
    Dim startIndex As Long
    Dim endIndex As Long
    Dim extractedText As String

    ' 最初の指定文字の位置を検索
    startIndex = InStr(1, originalString, startTxt)

    If startIndex > 0 Then
        ' 最後の指定文字の位置を検索
        endIndex = InStr(startIndex, originalString, endTxt)

        If endIndex > 0 Then
            ' 最初の指定文字から最後の指定文字までの部分文字列を取得
            extractedText = Mid(originalString, startIndex + 1, endIndex - startIndex - 1)
        Else
            ' 最後の指定文字が見つからない場合の処理
            MsgBox "「" & endTxt & "」が見つかりませんでした。"
        End If
    Else
        ' 最初の指定文字が見つからない場合の処理
        MsgBox "「" & startTxt & "」が見つかりませんでした。"
    End If
    ExtractSubstring = extractedText
End Function

使用例は以下です。

Private Sub 使用例()
    MsgBox ExtractSubstring("aaa:fs&ss", ":", "&")
End Sub

このマクロを実行すると、以下、画像のように、「:」と「&」の文字列「fs」が表示されます。

Follow me!