【UiPath】ループ内制御処理について(Break,Continue)




ループ内での制御処理のBreakとContinueについて紹介します。
簡単に言うと、
Breakはループをそこで終了し、ループを完全に抜ける処理です。(ループの次にいく)
Continueは対象のデータの処理は終了し、次のデータへと移る処理です。(ループの最初に戻る)

まず、基本のループ処理を作成します。
詳細はこちらをご参照ください。(【UiPath】For Each Rowの使い方

最初に以下のExcelを用意します。

最終的には結果列にワークフローで「完了」という文字をいれていくイメージです。

UiPathでReadRangeを使って今のExcelの内容をDataTableに読み込みます。

次にFor Each Rowで先ほど作ったDataTableでループさせます。
一旦制御なしで、全データに「完了」をいれるようにAssgin(row(“結果”)=”完了”)をFor Each Rowの中にセットします。

最後にWrite RangeでExcelを更新します。

これで実行してみると、Excelは以下のような結果となります。

そしてここから本題となります。
まずBreakをいれてみたいと思います。
Breakを通った時点でループ処理は終了となるため、基本的にIfと一緒に使います。
ということで、「チェック」が「OK」かどうかのIfをFor Each Rowの中に入れてみます。
Condition:row(“チェック”).ToString = “OK”

このIfだと、「チェック」が「OK」の場合左側のThenの道を通り、「チェック」が「OK」以外の場合Elseの道を通ります。
今回は「OK」の場合は先ほどのように「完了」をいれ、「OK」以外の場合はBreakさせてみます。
Breakは設定などは特になく入れるだけで使えます。(Activities>Available>Workflow>Control Flow>Break)

これで実行してみるとExcelは以下のような結果となります。

「チェック」が「NG」というデータにきたときに、そこで処理が終わったことがわかるかと思います。

続いて、Continueをいれてみます。
先ほどBreakをいれていたところを、Continueに変えます。(Activities>Available>Workflow>Control Flow>Continue)

これで実行してみると以下のような結果となります。

Breakと違い、「NG」のデータのあとも処理が続いていることがわかるかと思います。
ちなみに、今回のサンプルではContinueいれてもいれなくても実は結果が変わらないのですし、実際Ifを駆使すれば必要はないのですが、Ifが増えると大変見づらいのでContinueを使いこなせるとすっきりしてよいかと思います。

以上、ループ内での制御処理のBreakとContinueの使い方でした。
なお、Continueアクティビティは古いバージョンだと無い可能性がありますので、ご注意ください。

他の機能一覧はこちら
他の作業一覧はこちら