【ExcelVBA】Exitステートメント
処理の中断について
プログラムで何らかの処理をしている最中に、その処理を途中で中断する必要がでてくることがあります。
例えば、ある条件に該当したらその行より下に記述してある処理は行わずにfunctionを終了したいといったような場合です。
他にも前回紹介したDo LoopステートメントやFor Nextといった繰り返し処理を途中で終了したいといった場合です。
こうした処理を途中で終了させるためのステートメントが存在します。
それがExitステートメントです。Exitステートメントを使用することで繰り返し処理やプロシージャを途中で終了することができるようになります。
繰り返し処理の場合、以下のような動作となります。
Exitステートメントの書式
Exitステートメントは先ほど述べたように繰り返し処理やプロシージャを途中で終了させることができます。
それぞれ書式が少し異なりますので、まずは書式から見ていきましょう。
For Nextステートメントを中断する場合
Exit For
Do Loopステートメントを中断する場合
Exit Do
Subプロシージャを中断する場合
Exit Sub
Functionプロシージャを中断する場合
Exit Function
Propertyプロシージャを中断する場合 ※まだ一度も紹介していませんので参考までに
Exit Property
Exitの後ろに中断したい対象を指定します。
Exitステートメントの使い方
では次にExitステートメントの使い方について見ていきましょう。
Excelに以下のようなデータが格納されているとします。
セルの値を読み込んでいき、値がなくなったら処理を終わらせるとします。
ただし途中で対象の文字が出てきた場合はそこで処理を終了し、何行目かを表示させるとします。
今回はExitという文字列があったら終わらせます。
Sub VBA基礎第36回_1() Dim sum As Integer Dim i As Integer sum = 0 i = 1 '値がなくなるまでデータを読み込んでいく 途中でExitという文字列があると読み込みをやめます。 Do Until Cells(i, 1) = "" If Cells(i, 1) = "Exit" Then Exit Do '読み込んだセルのデータがExitに該当した場合、繰り返し処理を終わらせます。 End If i = i + 1 Loop MsgBox i & "行目に存在しています" End Sub
処理を見ていきましょう。
Do Loopステートメントを使用してA列のデータを繰り返し読み込んでいきます。
Untilを使用して””と一致する、つまり何もデータがないところまで繰り返すという処理にしています。
途中でExitが存在した場合、処理を終わらせる必要があるためIfステートメントを使用しています。
Exitが存在したらIfステートメント内のExit Doが実行されるかたちとなります。
該当しなかった場合はiをカウントアップしまた繰り返し処理の最初に戻ります。
実行結果は以下のようになります。
このようにExitを使用することで繰り返し処理を終了させることができます。
whileやuntilで条件を指定せず無限にループさせて、ある条件のときにだけ繰り返し処理を終了させるといった使い方もできます。
Exitをうまく使うことで無駄に繰り返し処理を続けることなく、条件によってすぐ次の処理に移行させることができたりしますので使い方を覚えておいてください。
まとめ
Exitステートメントを使用することで繰り返し処理やプロシージャを途中で終了することができます。
Subプロシージャを終了させるExit Sub、Functionプロシージャを終了させるExit Function、For Nextを終了させるExit For、Do Loopを終了させるExit Do、Propertyプロシージャを終了させるExit Propertyがあります。
確認問題
確認問題
以下の「○○○」に当てはまる文言を解答してください。
・○○○ステートメントを使用することで繰り返し処理やプロシージャを途中で終了させることができます。
・Do Loopを終了させるには○○○を記述します。
次回は、「For Each Nextステートメント」です。