|
こんにちは。かみちゃん です。
>ですが、CC123CA01から5バイトととって”,(カンマ)”を”,CC123”に置換しても途中でCA588という文字列の集合にかわるため、どのようにプログラムを書いたらいいのか分かりません。
置換というよりは、まず途中で変わる文字列があるのかないのかを検索します。
途中で変わる文字列があるならば、置換処理を2回する。
途中で変わる文字列がなければ、置換処理を1回する。
という方法になるかと思います。
また、
>Cells.Replace What:=",", Replacement:=",CC123", LookAt:=xlPart, _
では、セル全体を指定していますので、iとかjとかで、For〜Nextの繰り返し処理は意味がなさないです。
また、セル指定の入力ボックスも2回出ますが、1回でセル範囲を指定したほうがスマートではないでしょうか?
このあたりを踏まえて、以下修正したコードです。
WinXP(Home) + Excel2002(SR-3)で動作確認済みです。
Sub replace7() '文字列の変換
Dim a As Range
Dim b As Range
'エラー時も処理を続けます
On Error Resume Next
'処理したいセル範囲をaとする。
Set a = Application.InputBox("処理したいセル範囲を選択して下さい", "セルの指定", Type:=8)
'キャンセル時は終了します
If a Is Nothing Then
Exit Sub
End If
For Each b In a
'途中で変わる文字列"CA588"を探す。探す文字列は「途中の文字列」なので、",CA588"とカンマ付きとする。
If InStr(b, ",CA588") <> 0 Then
b = Replace(Mid(b, 1, InStr(b, ",CA588") - 1), ",", ",CC123") & "," & _
Replace(Mid(b, InStr(b, ",CA588") + 1, Len(b) - InStr(b, ",CA588")), ",", ",CA588")
Else
b = Replace(b, ",", ",CC123")
End If
Next
MsgBox "処理が完了しました。"
End Sub
|
|