Excel VBA:文字列中の指定文字列を全て削除する|Instr関数

文字列から指定した文字列をInstr関数で検索し削除するVBAです。




Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

Excel VBAで文字列の中から指定した一部の文字列を全て削除します。

削除といっても実際に削除するのではなく、見つかった文字列以外を結合する方法です。

結果的に検索文字列が含まれなくなります。

VBAではInstr関数・Left関数・Mid関数を使用します。

Instr関数の詳しい構文は「フルパスから親パスを取得する実行コード」を参照してください。



文字列から指定した文字列をInstr関数で検索し削除するVBA

Excelシート画面

ボタンをクリックすると下記を実行します。

「100-4545」郵便番号から「-」を取り除く。

結果A7セルの「1004545」になっています。

「エクセルのVBAを使ったエクセルの小技」から「エクセルの」を取り除きます。

結果A9セルの「VBAを使った小技」になっています。

文字操作フォーム


ExDeleteStrプロシージャの解説

引数

sSrc:元の文字列です。

sDel:削除する文字列

  1. sc変数に元の文字列をセットします。
  2. nLen変数に、Len関数で削除する文字列の長さをセットします。
  3. n変数に、Instr関数で最初に見つかった位置をセットします。
  4. n変数が0より大きい間、Doループを実行します。
  5. s1変数に、Left関数で見つかった位置までの文字列をセットします。
  6. sc変数に、見つかった文字列の残りの文字列をセットします。
  7. n変数に、Instr関数で最初に見つかった位置をセットします。
  8. 見つからなくなるまで、これを繰り返します。

Excel VBA実行コード

Private Function ExDeleteStr(sSrc As String, sDel As String) As String
    Dim s1 As String
    Dim sc As String
    Dim n As Integer
    Dim nLen As Integer
    
    sc = sSrc
    s1 = ""
    
    nLen = Len(sDel)
    n = InStr(sc, sDel)
    Do While n > 0
        If n > 1 Then
            s1 = s1 & Left(sc, n - 1)
        End If
        sc = Mid(sc, n + nLen)
        n = InStr(sc, sDel)
    Loop
    
    ExDeleteStr = s1 & sc
End Function

Private Sub CommandButton1_Click()
    Dim s1 As String
    
    s1 = "100-4545"
    Range("A6") = s1
    Range("A7") = ExDeleteStr(s1, "-")
   
    s1 = "エクセルのVBAを使ったエクセルの小技"
    Range("A8") = s1
    Range("A9") = ExDeleteStr(s1, "エクセルの")
   
End Sub



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved