質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

1572閲覧

VBでListBoxを遡上して書き換えたい

gamu

総合スコア31

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/11/07 06:01

以下のようなタブ区切りでコードの書かれたファイルがあります。

N01079 RD R101.0 P1
N01079 OR R118.3 P2
N01079 AND R101.6 P3
N01079 AND R102.1 P4
N01079 RDSTK1 R111.0 P5
N01079 ANDNOT K32.0 P6
N01079 ANDNOT K32.2 P7
N01079 RDSTK2 D28.3 P8
N01079 RDSTK3 D28.7 P9
N01079 AND D1028.0 P10
N01079 ORNOT D28.7 P11
N01079 ANDSTK3
N01079 RSNOT3 D28.3 P13
N01079 AND D28.5 P14
N01079 AND K31.4 P15
N01079 ANDNOT K31.2 P16
N01079 ORSTK3
N01079 RSNOT3 D28.5 P18
N01079 AND D28.7 P19
N01079 RDSTK4 D1028.0 P20
N01079 ORNOT D1000.1 P21
N01079 ANDSTK4
N01079 ORSTK3
N01079 ANDSTK2
N01079 ORSTK1
N01079 ANDNOT F1000.7 P26
N01079 OR R102.0 P27
N01079 AND R102.2 P28
N01079 WRT R102.0 P29

このうちRDSTK&番号が宣言された下の行では必ず
ORSTK&番号かANDSTK&番号が宣言されるのですが、
下に進むまではRDSTKの相手がわからないこの記述方法が好ましくないので
RDSTKを下記の画像のように書き換えたい。

しかしわかりません。
今やろうとしているやり方は、HOGEHOGE.txtの中の文字列を
Reader.ReadLine と Line.Split(vbTab)で生成した配列を
ListBox1に1行ずつAddしていくやり方を試していますが、
私のやりたい事を実現する場合、ListBox1の選択項目を遡上して項目を書き換える必要があると考えました。
しかしそんな事ができるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

listboxの内容をその何ライン目かを指定して書き換えることはできます。
例えば5行目の内容を書き換えたい場合(仮に’listbox1'の内容として)

VB.NET

1temp_str = ListBox1.Items(4) 'listboxは0から始まるので行数―1で4。予め文字列temp_strも定義しておく。 2'temp_strに対して文字の置き換えとかの処理 3' 4ListBox1.Items(4) = temp_str 5

で書き換え。

投稿2016/11/07 06:16

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gamu

2016/11/08 15:23

できました。ありがとうございます! 下記のような方法をとりました。 なお、コードが書きやすいように命令語RDSTK等は3文字に整形しました。 '遡上して変更************************************************************************************ ListBox1.Items.Clear() Dim Reader4 As New IO.StreamReader("C:\Users\HOGEHOGE.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) Dim Line4 As String = Reader4.ReadLine Dim Index As Integer Dim MAELINE(10) As String '差替え前のLINE Dim ATOLINE(10) As String '差替え後のLINE Dim SASIBAN(10) As Integer '差し替える項目番号 Dim MB As Integer '末尾番号 Do Until IsNothing(Line4) If Strings.Mid(Line4, 8, 3) = "RDS" Then MB = Strings.Mid(Line4, 11, 1) Index = ListBox1.Items.Count SASIBAN(MB) = Index MAELINE(MB) = Line4 End If If Strings.Mid(Line4, 8, 3) = "RSN" Then MB = Strings.Mid(Line4, 11, 1) Index = ListBox1.Items.Count SASIBAN(MB) = Index MAELINE(MB) = Line4 End If If Strings.Mid(Line4, 8, 3) = "ANS" Then MB = Strings.Mid(Line4, 11, 1) Select Case Strings.Mid(MAELINE(MB), 8, 3) Case "RDS" ATOLINE(MB) = Replace(MAELINE(MB), "RDS", "ASR") Case "RSN" ATOLINE(MB) = Replace(MAELINE(MB), "RSN", "ASN") End Select ListBox1.Items(SASIBAN(MB)) = ATOLINE(MB) End If If Strings.Mid(Line4, 8, 3) = "ORS" Then MB = Strings.Mid(Line4, 11, 1) Select Case Strings.Mid(MAELINE(MB), 8, 3) Case "RDS" ATOLINE(MB) = Replace(MAELINE(MB), "RDS", "OSR") Case "RSN" ATOLINE(MB) = Replace(MAELINE(MB), "RSN", "OSN") End Select ListBox1.Items(SASIBAN(MB)) = ATOLINE(MB) End If ListBox1.Items.Add(Line4) Line4 = Reader4.ReadLine Loop
guest

0

タブ区切りのデータをReadLineかReadToEndしてList(of String)とかに入れ、

for i = 0 to list1.count-1
list1(i).ToString.Split(vbtab)(1).ToString <-これ
next

をIsMatchするなり、contains使って調べるなりするとかでも良いように思います。

それとListboxを使用することが必須なんでしょうか?
必須だとしたら処理結果を書き込んだほうがいいのかなと。

投稿2016/11/07 06:38

mdj

総合スコア220

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gamu

2016/11/08 15:28

ご回答ありがとうございます。 ListBoxは私が初心者であるため、特に理由なく使用しています。 結果がすぐに出て好ましいという理由もあります。 稚拙な質問であったかもしれませんがご教授いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問