Functionreplace(ByVal sstr AsString, ByVal stag AsString, ByVal srep AsString) AsString Dim l1, l2, l3, x, i AsLong Dim st AsString x =InStr(sstr, stag) If x <1Then replace= sstr ExitFunction EndIf st = sstr l1 =Len(sstr) l2 =Len(stag) l3 =Len(srep) For i =0To l1 st =Left(st, x -1) & srep &Right(st, Len(st) - x - l2 +1) x =InStr(x + l3, st, stag) If x <1ThenExitFor Next replace= st End Function
Functionsplit(ByVal sstr AsString, ByVal spstr AsString) As Variant Dim star, lenstr, lensp, cur AsInteger Dim backstr() AsString Dim i AsInteger ReDim backstr(0) lenstr =Len(sstr) lensp =Len(spstr) star =InStr(sstr, spstr) If star <1Then backstr(0) = sstr split= backstr() ExitFunction EndIf backstr(0) =Left(sstr, star -1) cur = star + lensp For i = star + lensp To lenstr star =InStr(star + lensp, sstr, spstr) If star >0Then ReDim Preserve backstr(UBound(backstr) +1) backstr(UBound(backstr)) =Mid(sstr, cur, star - cur) cur = star + lensp Else ExitFor EndIf Next ReDim Preserve backstr(UBound(backstr) +1) backstr(UBound(backstr)) =Mid(sstr, cur, lenstr - cur +1) split= backstr() End Function
AC97でそれらしい関数を作ってみました。
【関数例】
PublicFunction Replace97(varStrings As Variant, varBeforeChr As Variant, varAfterChr As Variant) As Variant '----( 変数宣言 )---------------------------------------------- Dim lngX1 AsLong '----( 初期設定 )---------------------------------------------- Replace97 = varStrings '----( 置換処理 )---------------------------------------------- IfIsNull(varStrings) Or varStrings =""Then Else IfIsNull(varBeforeChr) Or varBeforeChr =""Then Else Replace97 ="" For lngX1 =1ToLen(varStrings) IfMid(varStrings, lngX1, Len(varBeforeChr)) = varBeforeChr Then Replace97 = Replace97 & varAfterChr lngX1 = lngX1 +Len(varBeforeChr) -1 Else Replace97 = Replace97 &Mid(varStrings, lngX1, 1) EndIf Next lngX1 EndIf EndIf End Function
※置換開始位置や置換回数などのパラメータは、考慮していません。
【確認】
PublicFunction TEST() MsgBox Replace97("ABC", "BC", "") → A MsgBox Replace97("ABCD", "BC", "") → AD MsgBox Replace97("ABCDABCDBC", "BC", "") → ADAD MsgBox Replace97("ABCDABCDBC", "BC", "XY") → AXYDAXYDXY End Function