環境はXP、VB2005になります。DataTable内をループで回し、If文条件にあうものをRemoveAtで削除しています。削除はできるのですが、ループでまわしていると行がありませんとエラーがでます。ループ数が多いんだと思います。そこでDataTableの次の行がないときループを抜けるという処理を入れようと思うのですが、IfでDataTableの次の行がないというのはどういう処理を記述すればよいのかわかりません。//ごれが抜けてるんじゃないでしょか。行を削除するのですから、Rows.Countの値が、削除するたびに減っていくことに注意した方が良いですね。返信ありがとうございます。i--の記述を入れていませんでした。ありがとうございます。i--の記述を入れていませんでした。本当に理解して解決?>そこでDataTableの次の行がないときループを抜けるという処理を入れようと思うのですがこの方法ではバグが残ります。返信理解というより参考にさせてもらったという感じです。そのまま使ったのではなくあくまで参考です。ループの中で削除し、削除をすればi--をし、Rows.Countとiがイコールになればループを抜けるという処理をして解決です。理解というより参考にさせてもらったという感じです。そのまま使ったのではなくあくまで参考です。まるるうさんはこのように書いているのだと思います。本当に理解して解決?私もまるるうさんに激しく同意。なにもこの話だけじゃないのだと思いますよ。理解した上で「自分だったらこうするぜ!」と参考にするのならかまわないのですけどどうもなんだかわからないけどこっちの方が良さそうだからちょっと参考にしてコネコネして作っちゃえ!的なイメージがあるんですよ。}}こんな感じにするかな。ループの中でループカウンタに手を入れるのは避けたいです(なんとなく)。怒ってるわけではないですし、なんとなくの理解でも問題がなさそうな質問ならつっこみはいれません。解決してるのを引き伸ばしてるのには理由があります。バグが残りやすい部分だからです。どこでバグが残りやすいか分かってますか?と確認したいだけです。>ループの中で削除し、削除をすればi--をし、Rows.Countとiがイコールになればループを抜けるという処理をして解決です。うん、プログラム自体はそうなんだけど、実際の動きで問題となる2点が理解できているかどうか?が重要です。1点目は、削除されたアイテム数だけインデックスがずれるということ。2点目は、ずれたインデックスでループを回すとループ処理が実行されないアイテムができるということ。いう理解ではなくて、例えばうまくいかなかった時点で以下のような動きを紙に書いて、どこに問題があるか見つけられるか?ということ。(2)アイテム3<チェック※アイテム2がチェックされていない削除後にインデックスを減らす処理で同じような図を書いて、問題点が解決されていることを確かめてください。>そこでDataTableの次の行がないときループを抜けるという処理を入れようと思うのですがこの方法ではバグが残りますよね?。評価しなおされるなら正常に処理できます。i++)のような動きではだめです。処理系によってはあるのですよ。ループの終了条件が初回のみ評価されて2回目以降にループ内で変更した値が反映されないのが。↓ちょうどこんな質問を見つけました。http://rucio.bbs.coocan.jp/?m=listthread&t_id=13&summary=onま、その場合は(1)ループカウンタとは別に削除したアイテム数を変数に覚えておいて、ループ内の処理でループカウンタから削除したアイテム数分引いたインデックスを持つアイテムに対して処理をする。↑これならループカウンタには変更を加えず、先頭から処理できます。頭を使えば、インデックスが変更されるのは削除したアイテムより後ろのアイテムのみだから、(2)リストの最後からループを逆に回す。(ぽぴ王子さんの方法)などがあるということです。