VBATips

特定文字以降を削除する処理をパーツ化する【Split関数応用】【ExcelVBA】

特定文字以降の文字列を削除したい

フォルダパスとファイル名を分けたいファイル名と拡張子を分けると同様に、
特定文字以降の文字を削除したい場合があります。パーツ化することで簡単にコピペで使えます。

特定文字以降の文字列を削除するサンプルコード

Split関数を使用し、特定文字前と特定文字後に分けます。

'■特定文字以降を削除する(特定文字前のみ返す)サブプロシージャ
Public Function Call_SpecificCharacterDelete(str As String, SPWord As String)
    Dim arr As Variant
    
    arr = Split(str, SPWord)
    
    Call_SpecificCharacterDelete = arr(0)
    
End Function

実際の使い方

Public Sub sample()

    '■通常の使い方
    Debug.Print Call_SpecificCharacterDelete("10,000円以上送料無料!", "円")    '10,000
    '■特定文字が複数の場合も正しく表示
    Debug.Print Call_SpecificCharacterDelete("C:\Users\temp", "\temp")          'C:\Users
    '■特定文字が複数回出現の場合は最初の段階で表示
    Debug.Print Call_SpecificCharacterDelete("C:\Users\temp", "\")              'C:
    '■特定文字が存在しなければ、全てを返す
    Debug.Print Call_SpecificCharacterDelete("123456", "aaa")    '123456
   
End Sub

注意点

  • Split関数で特定文字で分割して配列に格納しています。
  • 「10,000円以上送料無料!」を「円」で区切るなら以下となり、円の文字は消去されます。
    arr(0) = 10,000
    arr(1) = 以上送料無料!

関連記事

文字列を分割して配列に値を格納する【Split関数】
文字列内スペースの削除処理をパーツ化する【Replace関数】【ExcelVBA】
2個の一次元配列を結合(マージ)する【Join/Split】【ExcelVBA】
定数配列を使用する(Split/Arrayで代用)【ExcelVBA】
「二次元配列を列方向に結合(マージ)する」処理をパーツ化する【ExcelVBA】
「二次元配列を行方向に結合(マージ)する」処理をパーツ化する【ExcelVBA】

コメント

タイトルとURLをコピーしました