UiPath > For Each RowでDataTableの 行を削除できない時の対処法 (Invoke Code版)

行の削除はできない。

For Each Rowでデータテーブルの中身を回しながら、もしも指定した条件に一致しない行が存在した場合、削除することは少し手間がかかります。

For Each Rowの中でもしもデータの行数が変わってしまう場合、削除した後に行数自体が変更してしまうため、エラーになるケースが発生します。ExcelのVBAなどでもよくありますよね。

この場合、データテーブルを最後のデータテーブルか順番に削除していくと、うまくいきます。

Invoke Codeを使ってみる

Excel VBA好きな私からすると、For文とStep -1を繰り返したいですね。

Invoke Codeの詳細

Invoke Codeの中身はこんな感じです。
最初にデータテーブルの最終行から降順にFor文が回っていきます。Step -1に設定しているので、Nextでiが-1されます。

もしも、行「商品名」が「りんご」だった場合、削除していきます。

コードの引数は以下のようになっています。myDTの中身が「in/Out」になっていることに気をつけてください。

なぜInvoke Codeを使いたがるかというと、UiPathのファイルをデバッグがFor Each Rowでだと非常に重くなるからです。

ここは個人的な趣味の領域でもあります。運用/開発手順に従って、For Eachを使ってみたりしてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

目次