【VBA】文字列から指定文字より前/後ろをカットする|InStrRev/Left$/Mid$
作成日:2022-11-01
更新日:2025-10-06

指定文字列の最後の出現位置で切る
元の文字列から、指定文字より後ろの文字をカット|前を残す
' return the part before the last occurrence of strCut
' 指定文字列の最後の出現より前の部分を返す
Public Function CutAfterLastStr( _
ByVal strSrc As String, _
ByVal strCut As String) As String
Dim pos As Long
pos = InStrRev(strSrc, strCut, , vbTextCompare)
If pos = 0 Then
CutAfterLastStr = strSrc ' 見つからなければ元の文字列を返す
Else
CutAfterLastStr = Left$(strSrc, pos - 1)
End If
End Function
元の文字列から、指定文字より前の文字をカット|後ろを残す
' return the part after the last occurrence of strCut
' 指定文字列の最後の出現より後の部分を返す
Public Function CutBeforeLastStr( _
ByVal strSrc As String, _
ByVal strCut As String) As String
Dim pos As Long
pos = InStrRev(strSrc, strCut, , vbTextCompare)
If pos = 0 Then
CutBeforeLastStr = strSrc ' 見つからなければ元の文字列を返す
Else
CutBeforeLastStr = Mid$(strSrc, pos + Len(strCut))
End If
End Function
Example
入力文字列 | 指定文字 | 関数 | 結果 |
---|---|---|---|
"C:\Work\Project\Report.xlsx" | "\" | CutAfterLastStr | "C:\Work\Project" |
"C:\Work\Project\Report.xlsx" | "\" | CutBeforeLastStr | "Report.xlsx" |
"user@example.com" | "@" | CutAfterLastStr | "user" |
"user@example.com" | "@" | CutBeforeLastStr | "example.com" |
Vocabulary
| Defensive Programming | 防御的プログラミング |
| Guard Clause | ガード節 |
| InStrRev Function | InStrRev関数 |
| Edge Case | エッジケース |
| Utility Function | ユーティリティ関数 |
| Intent-Revealing Code | 意図が明確なコード |
Defensive programming keeps utility functions trustworthy.
2022-11-01
編集後記:
この記事の内容がベストではないかもしれません。