May 25, 2004

Access97で文字の置換(ユーザー関数)

Access2000からはReplaceという関数が出来ています。
文字列操作の基本的な機能だと思うのですが・・・。

Shintakの覚え書き:AC97部品集からいただきました。

----------------------------------------

Public Function MyReplace(IN文字列 As Variant, IN置換対象 As Variant, IN置換文字列 As Variant, Optional argCompare) As String
’MyReplace("ABCDabcdABCDabcd", "AB", "ZZ")  → "ZZCDZZcdZZCDZZcd"
’MyReplace("ABCDabcdABCDabcd", "AB", "ZZ", vbBinaryCompare)  → "ZZCDabcdABCDabcd"
’MyReplace("ABCDabcdABCDabcd", "AB", "ZZ", vbTextCompare)  → "ZZCDZZcdZZCDZZcd" : 大文字小文字を区別しない
’MyReplace("ABCDabcdABCDabcd", "AB", "ZZ", vbDatabaseCompare) → "ZZCDZZcdZZCDZZcd" : デフォルト
Dim wkSTR As String
Dim lngPos As Long
Dim lngBeforeLen As Long
Dim lngAfterLen As Long
Dim strAfter As String
Dim intCompare As Integer

If IsNull(IN文字列) Or IN文字列 = "" Then Exit Function
If IsNull(IN置換対象) Or IN置換対象 = "" Then Exit Function
If IsNull(IN置換文字列) Then
strAfter = ""
Else
strAfter = IN置換文字列
End If

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

lngBeforeLen = Len(IN置換対象)
lngAfterLen = Len(strAfter)

wkSTR = IN文字列
lngPos = InStr(1, wkSTR, IN置換対象, intCompare)
Do While lngPos > 0
wkSTR = Left$(wkSTR, lngPos - 1) & strAfter & Mid$(wkSTR, lngPos + lngBeforeLen)
lngPos = InStr(lngPos + lngAfterLen, wkSTR, IN置換対象, intCompare)
Loop
MyReplace = wkSTR

End Function

----------------------------------------

投稿者 qoop : May 25, 2004 10:01 AM
コメント
コメントする









名前、アドレスを登録しますか?