文字列の中からINSTRを使いループし、指定文字列を探すプロシージャをAccess VBAで作成しました。
INSTR関数で見つかればその部分を削除します。
文字列内の空白を削除したいとか、一文字だけでなく文字列したいとかはよくあります。
ここで掲載しているプロシージャを標準モジュールなどに入れておくと、引数を指定し呼び出せば実行できます。
● 指定した文字列削除するプロシージャの構文
Function AcDeleteStr(sSrc As String, sDel As String) As String
引数 sSrc : 元の文字列を指定します。
引数 sDel : 削除する文字列を指定します。
戻り値 : 削除した結果の文字列が返ります。
■ Access実行フォーム画面
フォームにボタンとテキストボックスを配置しています。
文字列から指定文字列を削除ボタンをクリックすると実行します。
1行目は、「123-4567」から「-」を削除しています。
2行目は、「アクセスのVBAを使ったアクセスの小技」から「アクセスの」を削除しています。
その結果をテキストボックスに表示しています。
■ Access VBA 実行コード
Option Compare Database
Option Explicit
Private Function AcDeleteStr(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
AcDeleteStr = s1 & sc
End Function
Private Sub コマンド0_Click()
Dim s1 As String
s1 = "123-4567"
Me!テキスト3 = s1 & " 結果 "
Me!テキスト3 = Me!テキスト3 & AcDeleteStr(s1, "-") & vbCrLf & vbCrLf
s1 = "アクセスのVBAを使ったアクセスの小技"
Me!テキスト3 = Me!テキスト3 & s1 & " 結果 "
Me!テキスト3 = Me!テキスト3 & AcDeleteStr(s1, "アクセスの")
End Sub