• 締切済み

テキストボックス(一行ずつ処理する方法)

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@ 場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。

みんなの回答

  • hanka2
  • ベストアンサー率38% (15/39)
回答No.4

何行でも出来ます。 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

Ksou
質問者

お礼

助かりました。 ありがとうございます。m(_ _)m

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

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 はこちらでのテストですので、環境に合わせて変更願います。

Ksou
質問者

お礼

助かりました。 ありがとうございます。m(_ _)m

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

テキストボックスに改行で3行の文字列が入っていると言う事ですか? 或いはリストボックスとか??

Ksou
質問者

補足

テキストボックスに改行で3行の文字列が入ってます。 よろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

(1)各行をSplit関数でスペースで分割。要素数0,1,2の3ブロックに分かれると思う。 (2)第3ブロック(要素数2)に”ABC"は出てくるようだから、第3ブロックの文字列において、INSTR関数をかけて、"ABC"を探す。あればその行の第二ブロックを"0026"で置き換える。 こういうロジックでどうですか。 (1)(2)には仮定が入っているが、それは間違っていないかな。 (例スペースで区切られている等) 間違いがあれば補足してください。

関連するQ&A