Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


45787 / 76732 ←次へ | 前へ→

【35931】検索文字列の置換方法
質問  Jack  - 06/3/16(木) 11:59 -

引用なし
パスワード
   お尋ねします。

"Book::TDK01A"
"Book::SONY05D"
"Book::KEN10Z"

というような文字列を検索して"Book::"以降の文字列の置換をしたいと思っています。
置換回数は最大50回程あり、その都度違います。
エクセルの置換機能のように、まず初めの"Book::"が入った文字列を検索して置換、
次に、2番目にある"Book::"を検索して置換、次に3番目の"Book::"を検索して置換、
という作業を繰り返し行いたいのです。
以前こちらで見つけて使わせていただいている下記のコードを参考に作ろうと思うのですが、"Book::"以降の文字が数字の場合はうまくいくのですが、文字列になると、文字が追加されてしまい、置換したい"TDK01A"の部分が残ったままになります。

いろいろ試してみたのですがどこを変更すればよいのか全く解らず行き詰まってしまいました。
どなたかお知恵をお貸しいただけないでしょうか??
どうぞ宜しくお願い致します。


  Const S As String = """Book::" '検索する文字列
  Dim MyS As String
  Dim MyS0 As String
  Dim Ans1 As Variant
  Dim n As Long
  Dim i As Long, j As Long

i = 1
  Do While InStr(i, MyS, S) > 0
    j = InStr(i, MyS, S)
    n = Val(StrConv(Mid(MyS, j + Len(S)), 8))
    If n = 0 Then
      MyS0 = S
    Else
      MyS0 = S & Mid(MyS, j + Len(S), Len(CStr(n)))
    End If
    Ans1 = Application.InputBox("検索文字列は " & MyS0 & _
      Chr(13) & Chr(13) & "置換する文字列", , _
      """Book::"& StrConv("", 4))
    If VarType(Ans1) = vbBoolean Then
      Ans1 = MyS0
    End If
    If n = 0 Then
      MyS = Left(MyS, j - 1) & Ans1 & Mid(MyS, j + Len(S))
    Else
      MyS = Left(MyS, j - 1) & Ans1 & Mid(MyS, j + Len(S) + Len(CStr(n)))
    End If
    i = j + Len(Ans1) - 1
  Loop

0 hits

【35931】検索文字列の置換方法 Jack 06/3/16(木) 11:59 質問
【35932】Re:検索文字列の置換方法 ちくたく 06/3/16(木) 12:25 回答
【35937】Re:検索文字列の置換方法 Jack 06/3/16(木) 14:41 質問
【35940】Re:検索文字列の置換方法 ちくたく 06/3/16(木) 15:49 回答
【35941】Re:検索文字列の置換方法 ちくたく 06/3/16(木) 16:04 発言
【35942】Re:検索文字列の置換方法 Jack 06/3/16(木) 16:12 質問
【35943】Re:検索文字列の置換方法 Blue 06/3/16(木) 16:29 発言
【35951】Re:検索文字列の置換方法 ちくたく 06/3/16(木) 17:10 発言

45787 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free