リストの中身に同じ文字がはいってるか調べるには?

解決


まめ  2004-07-30 04:35:33  No: 115182

リストの中身を調べて「◎」という字がないか調べて、その◎という字が見つかったらそのリストを消すのには、どうすればよいのでしょうか?
Dim counter As Integer'カウンター
dim A as string="◎"
    For counter = 0 To 30'リストの行が30までとして
      If ListBox1.Items.Item(counter) =A Then
        ListBox1.Items.Item(counter) = ""
      End If
    Next
↑のような感じに書いてみましたが、エラー(追加情報 : 指定された引数は、有効な値の範囲内にありません。)が起こってしまって行き詰っています。

何かいい方法とどのようにしたら調べることができるのか教えてください。
お願いします。


まめ  2004-07-30 04:37:26  No: 115183

ええっと、書き忘れていましたがバージョンはVB.netです。


特攻隊長まるるう  2004-07-30 19:21:51  No: 115184

エラーメッセージに従い引数の有効な範囲を調べればいいんじゃないですか?
引数(counter)が何の時にエラーになってますか?For 文の動きを最初から
ステップ実行して下さい。
多分、30だからダメなんじゃないでしょうか?


ガッ  2004-07-30 23:17:52  No: 115185

…あまりVB.Netのことはわからないんだが、コレクション相手だったらfor each ステートメントを使えなかったっけ?


人造人間ヴィビーン  2004-07-30 23:26:46  No: 115186

'こんな感じとか・・

        Dim counter As Integer

        For counter = ListBox1.Items.Count - 1 To 0 Step -1
            If InStr(ListBox1.Items.Item(counter), "◎") <> 0 Then

                ListBox1.Items.RemoveAt(counter)

            End If
        Next


人造人間ヴィビーン  2004-07-31 01:09:24  No: 115187

訂正です。

If InStr(ListBox1.Items.Item(counter), "◎") <> 0 Then→×

If ListBox1.Items.Item(counter) = "◎" Then→○


まめ  2004-08-01 12:30:11  No: 115188

返信が遅くなりすいません。
人造人間ヴィビーンさんのとおりやってみたらできました!!消えたっ!!
30ってのがだめだったみたいです。
すいません。
特攻隊長まるるうさん、ガッさん、人造人間ヴィビーンさんありがとうございました!!!

上手くいったのですがちょっと疑問があって、
For counter = ListBox1.Items.Count - 1 To 0 Step -1
ここの文のStepっていうのはどういう機能を果たしているのでしょうか??
使ったこともみたこともなくって、-1から0までforでまわして、stepでどうなってるんでしょうか?
勉強の為に教えてください(>△<)


まめ  2004-08-01 13:45:10  No: 115189

step調べたらありましたw
すいません。
ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加