- 締切済み
テキストボックス(一行ずつ処理する方法)
Visual Basic6.0 よろしくお願いします。 テキストボックスの 0001 0024 X00130.0*Y*D20.0*G050.0@ 0002 0024 X00135.0*Y*ABC20.0*G090.0@ 0003 0024 X00140.0*Y*ABC20.0*G050.0@ のような文字列から文字列"ABC"を検索して "ABC"がある行の"0024"を"0026"に置換したい 0001 0024 X00130.0*Y*D20.0*G050.0@ 0002 0026 X00135.0*Y*ABC20.0*G090.0@ 0003 0026 X00140.0*Y*ABC20.0*G050.0@ 場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hanka2
- ベストアンサー率38% (15/39)
何行でも出来ます。 Sub hogehoge() txtBox.Text = Fnc(txtBox.Text,vbNewLine, "ABC", "0024", "0026") End Sub Function Fnc( _ Exp As String, _ Sep As String, _ Src As String, _ Fnd As String, _ Rep As String _ ) As String Dim Idx As Long, Buf As Variant, Rsl As String Buf = Split(Exp, Sep) For Idx = LBound(Buf) To UBound(Buf) If CBool(InStr(Buf(Idx), Src)) Then Rsl = Rsl & Sep & Replace(Buf(Idx), Fnd, Rep) Else Rsl = Rsl & Sep & Buf(Idx) End If Next Fnc = Mid(Rsl, Len(Sep)) End Function
- n-jun
- ベストアンサー率33% (959/2873)
ANo.2です。 Dim st As String Dim i As Integer Dim v As Variant v = Split(Me.Text1.Text, Chr(13)) st = "" For i = 0 To UBound(v) If InStr(v(i), "ABC") Then st = st & Replace(v(i), "0024", "0026") & Chr(13) Else st = st & v(i) & Chr(13) End If Next st = Left(st, Len(st) - 1) Me.Text1.Text = st 例えばのサンプルです。 Me.Text1 はこちらでのテストですので、環境に合わせて変更願います。
お礼
助かりました。 ありがとうございます。m(_ _)m
- n-jun
- ベストアンサー率33% (959/2873)
テキストボックスに改行で3行の文字列が入っていると言う事ですか? 或いはリストボックスとか??
補足
テキストボックスに改行で3行の文字列が入ってます。 よろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
(1)各行をSplit関数でスペースで分割。要素数0,1,2の3ブロックに分かれると思う。 (2)第3ブロック(要素数2)に”ABC"は出てくるようだから、第3ブロックの文字列において、INSTR関数をかけて、"ABC"を探す。あればその行の第二ブロックを"0026"で置き換える。 こういうロジックでどうですか。 (1)(2)には仮定が入っているが、それは間違っていないかな。 (例スペースで区切られている等) 間違いがあれば補足してください。
お礼
助かりました。 ありがとうございます。m(_ _)m