思考酒後

自分に入ってきた情報を定着、深化するために文章化

MENU

【Excelマクロ】自分用の整理メモ②【Exit forの使い分け】


Exit For【繰返しループを途中で終了できる機能】の使用法を理解したので、使用例を4例、下記に記録しておきます。

 

①iを終了のトリガーとしたい場合のExit Forの使い方

これはすごく単純。むしろiの設定をちゃんとしろよって感じ。

Sub exit_for_1()
'iを終了のトリガーとしたい場合のexit~forの使い方
Dim i As Variant
For i = 1 To 7
Cells(3 + i, 4) = Cells(3 + i, 3) * 2

'i=3になった時に終了
If i = 3 Then
Exit For
End If
Next i

End Sub

 

①i=3で終了としているので、i=4以降は空欄。

f:id:masa_mn:20161118141259j:plain

 

②iを用いて出力されたものをトリガーとしたい場合のExitForの使い方

これはiを用いて出力された値はコントロールが難しいので有効に思う。

 

Sub exit_for_2()
'iを用いて出力されたものをトリガーとしたい場合のexit~forの使い方
'なお、その処理後に変数の進行が終了する
Dim i As Variant
For i = 1 To 7
Cells(3 + i, 4) = Cells(3 + i, 3) * 2

'iを用いて出力されたものが7より大きくなった時に終了
If Cells(4 + i, 5) > 7 Then
Exit For
End If
Next i

End Sub

 

iは計算結果が7より大きくなったら終了と設定しているので、i=4より後は空欄。

f:id:masa_mn:20161118141330j:plain

 

③"終了"という文字列をトリガーとする場合のExitForの使い方

終了条件としてi及びiに関するもの以外を条件としたい場合の使い方。

 

Sub exit_for_3()
'それ以外を終了のトリガーとしたい場合のexit~forの使い方
'"終了"という文字列をトリガーとする場合

Dim i As Variant
For i = 1 To 7

'前提条件として「どうなった場合を終了とするか」を定義しておく
If Cells(3 + i, 3) = "終了" Then
Cells(3 + i, 4) = "終了"
Exit For
End If

'上記の条件とならなければiの入力が進行する
Cells(3 + i, 4) = Cells(3 + i, 3) * 2
Next i

End Sub

 

③C列において"終了"の文字があるときに終了。そしてその時のD列に終了と入力している。

f:id:masa_mn:20161118141338j:plain

③’「数値が入力されていない場合」をトリガーとする場合のExitForの使い方

条件分岐の型として数値かどうかは汎用性が高いと思うので記載しておきます。

Sub exit_for_3_3()
'それ以外を終了のトリガーとしたい場合のexit~forの使い方
'「数値が入力されていない場合」をトリガーとする場合

Dim i As Variant
For i = 1 To 7

'数字ならiの入力が進行する。数字でなければ
'"終了"と入力され、なおかつiの入力も終了する

If IsNumeric(Cells(3 + i, 3)) Then
Cells(3 + i, 4) = Cells(3 + i, 3) * 2

Else: Cells(3 + i, 4) = "終了"
Exit For
End If

Next i
End Sub

 

C列に文字列があった場合に終了。終了時の右側に"終了"を入力。

f:id:masa_mn:20161118141347j:plain

 

③'は③と違い使用範囲が広いことが分かる。

おしまい。