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

解決


まめ  2004-07-29 19:35:33  No: 115182  IP: [192.*.*.*]

リストの中身を調べて「◎」という字がないか調べて、その◎という字が見つかったらそのリストを消すのには、どうすればよいのでしょうか?
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-29 19:37:26  No: 115183  IP: [192.*.*.*]

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

編集 削除
特攻隊長まるるう  2004-07-30 10:21:51  No: 115184  IP: [192.*.*.*]

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

編集 削除
ガッ  2004-07-30 14:17:52  No: 115185  IP: [192.*.*.*]

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

編集 削除
人造人間ヴィビーン  2004-07-30 14:26:46  No: 115186  IP: [192.*.*.*]

'こんな感じとか・・

        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-30 16:09:24  No: 115187  IP: [192.*.*.*]

訂正です。

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

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

編集 削除
まめ  2004-08-01 03:30:11  No: 115188  IP: [192.*.*.*]

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

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

編集 削除
まめ  2004-08-01 04:45:10  No: 115189  IP: [192.*.*.*]

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

編集 削除