【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 FunctionExample
| 入力文字列 | 指定文字 | 関数 | 結果 |
|---|---|---|---|
"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
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[VBA]CSVに書き出す 【VBA】CSVに配列の中身を書き出す|ADODB.Stream -

[VBA]CreateObjectまとめ 【VBA】CreateObject|dictionary・テキストファイル・outlook・Access用にオブジェクトを生成する -

[VBA]Killthe progress dialog VBA|保存処理(SaveAs)がフリーズする原因と対策 -

[VBA]Trimwhitespace 【VBA】先頭,末尾,両端の空白を削除する|Trim -

時間計算のDateAdd 【VBA】DateAddで時間の足し算・引き算 -

[VBA]開いているかwith FullName 【VBA】ブックが開いているか判定|StrComp で FullNameを調べる