Excelには文字の置き換えを行うReplace関数がありますが、ここではReplace関数を使用せずに、独自のプロシージャを作成します。 Replace関数ではできない場合に、このような方法があることを知っていると役立つかと思います。 ExReplaceStrプロシージャを作成しました。 構文:ExReplaceStr(src As String, fnd As String, repl As String) 引数は下記になります。
関連する「Replace関数で複数文字列の置換が可能かテストする」も掲載しています参照してください。 |
Option Explicit
'Excel VBAで文字列の置き換え
'src: 元の文字
'fnd: 置き換え前の文字
'repl: 置き換える文字
Public Sub ExReplaceStr(src As String, fnd As String, repl As String)
Dim delpos As Long
Dim startpos As Long
Dim before As String
Dim after As String
'検索開始位置
startpos = 1
'開始の検索結果位置
delpos = InStr(startpos, src, fnd)
Do Until delpos = 0
'検索位置から前の文字
before = Left(src, delpos - 1)
'検索位置から後の文字
after = Right(src, (Len(src) - (delpos + Len(fnd) - 1)))
'置き換え後の文字
src = before & repl & after
'次の位置から繰り返す
startpos = Len(before) + Len(repl) + 1
delpos = InStr(startpos, src, fnd)
Loop
End Sub
Private Sub CommandButton1_Click()
Dim s1 As String
'置き換え前の文字
s1 = "あいうえおおまかせかきくけこ"
Range("B9") = s1
'文字列の置き換え
ExReplaceStr s1, "おまかせ", "食べる"
'置き換え結果の表示
Range("B10") = s1
End Sub
コマンドボタンをクリックすると、B9に置き換え前の文字、B10に置き換え後の文字が表示されます。
「おまかせ」が「食べる」に置き換わっているのが分ります。
■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します