No.1ベストアンサー
- 回答日時:
私は以下のような関数を定義して置換をしています。
----
Public Function Replace(ByVal vSrc As Variant, ByVal strTarget As String, ByVal strNew As String) As Variant
Dim strWork As String
Dim intCharAt As Integer
Dim intStart As Integer
intStart = 1
strWork = vbNullString
Do
intCharAt = InStr(intStart, vSrc, strTarget, vbBinaryCompare)
If intCharAt = 0 Then
Replace = strWork & Mid$(vSrc, intStart)
Exit Function
End If
strWork = strWork & Mid$(vSrc, intStart, intCharAt - intStart) & strNew
intStart = intCharAt + Len(strTarget)
Loop
End Function
----
実際の置換はこういうイメージでしょうか。
dim rst as Recordset
set rst = CurrentDB.openRecordset("対象のテーブル")
Do until rst.EOF
rst.Edit
rst![電話番号] = Replace(rst![電話番号], "-", "")
rst.update
rst.moveNext
loop
rst.close
この回答への補足
ありがとうございました!!!!
動きました!
ですが、一点・・・。
Null値のとき「Nullの使い方が不正です」と出てしまいます。
No.6
- 回答日時:
電話番号フィールドにNullではなく空文字だけ入っているのであれば
If rst![電話番号] <> "" Then
rst![電話番号] = Replace(rst![電話番号], "-", "")
End If
で問題ないと思います。
Nullが入る可能性があるのであれば
If rst![電話番号] <> "" or Not IsNull(rst![電話番号])Then
rst![電話番号] = Replace(rst![電話番号], "-", "")
End If
としても良いと思います。
No.5
- 回答日時:
No.3の補足です。
Null判定はこっちの方が良いかもしれません。
違いはテーブルのフィールドに、空白文字列の格納を許可しているかどうかです。
If IsNull(vSrc) Then
Replace = Null
Exit Function
End If
No.4
- 回答日時:
No.1で回答したものです。
一回で解決できなくてすみません。置換対象文字列のNull判定を行えば解決すると思います。
Null判定を入れたプロシージャはこのようなものになります。
--------------------
Public Function Replace(ByVal vSrc As Variant, ByVal strTarget As String, ByVal strNew As String) As Variant
Dim strWork As String
Dim intCharAt As Integer
Dim intStart As Integer
If IsNull(vSrc) Then
Replace = vbNullString
Exit Function
End If
intStart = 1
strWork = vbNullString
Do
intCharAt = InStr(intStart, vSrc, strTarget, vbBinaryCompare)
If intCharAt = 0 Then
Replace = strWork & Mid$(vSrc, intStart)
Exit Function
End If
strWork = strWork & Mid$(vSrc, intStart, intCharAt - intStart) & strNew
intStart = intCharAt + Len(strTarget)
Loop
End Function
ご丁寧にありがとうございます。
独自でやったやり方としては置換の部分を
If rst![電話番号] <> "" Then
rst![電話番号] = Replace(rst![電話番号], "-", "")
End If
として、一応動くことは動いたのですが
問題あるでしょうか?
No.3
- 回答日時:
#2で回答を入れたものです。
レコードの更新は#1の方の解答にある「rst.update」です。私の場合では 「rs.update」です。それと私は-を*に置換しましたが全く-を削除するなら「””」で上手く行くでしょう。
または”*” &を削除してください。
データベース名も意味ありげで良くなかったと思います。
「取引銀行B」は適当に名前を別につけてください。結果的に#1の方の解答と良く似ています。変数名を長くするか
短くするかで、随分感じは違っていますが。エクセルと使える関数が一致して欲しいです。どうぞよろしく。
度々すみません。
ちゃんと見ればわかることでしたね。
No.1の方と考え方としては同じってことがわかりました。
どうせ見てもわからないと決めつけていました。すみません。
色々勉強になり、本格的に色々勉強したいなと思いました。
ありがとうございました。
No.2
- 回答日時:
アクセスで第1列に電話番号を入力して、データベースを作りました。
市外・市内・電話番号の区切りは勿論「-」で区切って作ります。モジュールに下記を作ります。そして実行します。
あえて「レコードを更新して」いないので本番では改良してください。
私の癖でMsgBoxを確認のため入れていますが、不要時には削除してください。数件のデータでテスト確認済み。
Sub test01()
Dim p As Integer
Dim l As Integer
Dim s As String
'----
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("取引銀行B")
Set rs = db.OpenRecordset("電話番号")
'--------
Do While Not rs.EOF
l = Len(rs!番号)
s = rs!番号
'----
p01:
p = InStr(1, s, "-", 1)
If p = 0 Then GoTo p02
s = Mid(s, 1, p - 1) & "*" & Mid(s, p + 1, l - p)
MsgBox s
GoTo p01
'----
p02:
' ここに更新ステップを入れる
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing
'-------
End Sub
結局、置換する関数は見つかりませんでした。文字列探索の関数もInstrだけでした。(AC2000VBAハンドブック等調べた)
InstrBの方が適当かもしれませんので、考えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Excel(エクセル) 数式の置換がうまく行かない 6 2022/05/04 15:51
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Word(ワード) ワードフォント 一括置換の方法 4 2022/12/31 00:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマを改行に変換する方法
-
カンマ( , )をタブに置換したい。
-
文字の列を揃えるには
-
エクセルの『検索と置換ボック...
-
ワードで複数の文字を一括・連...
-
Excelで全角ハイフンを半角ハイ...
-
複数のスペースを1つのタブに...
-
エクセルでコンマとピリオドを...
-
桐の項目名の変数利用(一括処理)
-
Word:差し込み印刷時に文字列...
-
Word VBA フッターでの文字の置換
-
Excelで特定の文字以下を削除し...
-
テキストでタブを検索してスペ...
-
【MS Office Word 2007】文章の...
-
ワードのVBAについて
-
サクラエディタで特定の改行を...
-
Wordの置換を使って複数のスペ...
-
セルの文字列後ろのスペース削除
-
ExcelのVBA 正規表現でタブを...
-
ワード2010 置換方法を教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマを改行に変換する方法
-
カンマ( , )をタブに置換したい。
-
秀丸で余分なスペースを削除したい
-
Excelで全角ハイフンを半角ハイ...
-
文字の列を揃えるには
-
エクセル重複削除で綺麗に削除...
-
複数のスペースを1つのタブに...
-
Word:差し込み印刷時に文字列...
-
エクセルの『検索と置換ボック...
-
ワードで複数の文字を一括・連...
-
文字列に含まれているダブルク...
-
エクセルで濁点カナの変換方法...
-
word 改行マークを印刷時に表示...
-
セルの文字列後ろのスペース削除
-
1文字だけ置換したい
-
【MS Office Word 2007】文章の...
-
Excelで特定の文字以下を削除し...
-
エクセルの「置換」で1行の部分...
-
Excel : テキストボックス中の...
-
.txtファイルの空白を全て消去...
おすすめ情報