文字列中の特定文字列を置き換えるユーザー定義関数 Hit Counter

対象バージョン : 97
最終更新日 : 1999/09/12 (オリジナル作成日 : 1998/12/10)


概 要

与えられた文字列の中から、文字列を検索し、その文字列があれば指定した文字列に置き換えるユーザー定義関数です。

【例】

元の文字列 "ABCDEFGHABCDEFGH"
検索する文字列 "DEF"
置換する文字列 "YZ"
結果 "ABCYZGHABCYZGH"

 

構 文

 ReplaceString(Source, Before, After [,Compare])

 

解 説

ReplaceString 関数の戻り値は文字列型 (String)です。

ReplaceString 関数では次の引数を使用します。

引 数 内     容
Source 変換する元の文字列を文字列式で指定します。
Null の場合、この関数は長さ 0 の文字列を返します。
Before 検索する文字列を文字列式で指定します。
Null の場合、この関数は長さ 0 の文字列を返します。
After Before で指定した文字列があった場合に置き換える文字列を文字列式で指定します。
長さ 0 の文字列も可能です。
Null の場合、長さ 0 の文字列とみなします。
Compare Source を検索する際の比較方法を指定します。
組み込み定数
vbDatabaseCompare 2
vbBinaryCompare

0

この引数は省略可能です。

既定値は vbDatabaseCompare です。

 

ユーザー定義関数

Public Function ReplaceString(argSource As Variant, argBefore As Variant, _
    argAfter As Variant, Optional argCompare) As String
Dim strString As String
Dim lngPos As Long
Dim lngBeforeLen As Long
Dim lngAfterLen As Long
Dim strAfter As String
Dim intCompare As Integer

If IsNull(argSource) Or argSource = "" Then Exit Function
If IsNull(argBefore) Or argBefore = "" Then Exit Function
If IsNull(argAfter) Then
    strAfter = ""
Else
    strAfter = argAfter
End If

If IsMissing(argCompare) Then
    intCompare = vbDatabaseCompare
Else
    intCompare = argCompare
End If

lngBeforeLen = Len(argBefore)
lngAfterLen = Len(strAfter)

strString = argSource
lngPos = InStr(1, strString, argBefore, intCompare)
Do While lngPos > 0
    strString = Left(strString, lngPos - 1) & strAfter & _
        Mid(strString, lngPos + lngBeforeLen)
    lngPos = InStr(lngPos + lngAfterLen, strString, argBefore, intCompare)
Loop
ReplaceString = strString
End Function

使 用 例

ReplaceString("ABCDabcd", "AB", "ZZ") → "ZZCDZZcd"
ReplaceString("ABCDabcd", "AB", "ZZ", vbBinaryCompare) → "ZZCDabcd"

補 足

 

改定履歴


目次へ戻る