質問: "1" Then dt.ImportRow(dt.Rows(i)) End If Next End Sub End Class ```
回答: 下記コードを実行してみてください。 ``` Private Sub TEST() Dim max As Integer = 10 For i = 0 To max max = 20 Trace.WriteLine(i) Next End Sub ``` 実行してみれば分かると思いますが、最初に For i = 0 To max の行を実行された時のmaxの値でFor文の上限が設定されます。 ですので、ループ内でmaxの値を変更してもループの回数は変わりません。 DataTableの仕様ではなく、For文の仕様です。 また ``` For Each r As DataRow In dt.Rows ' フラグが"1"の場合行をコピー If r("Flg") = "1" Then dt.ImportRow(r) End If Next ``` と書いたとしてもSystem.InvalidOperationExceptionが発生します。 DataTableの行を列挙するようなループ内で、そのDataTableの行数を変更する というのはやってはいけません。