📒
VB基本まとめ~条件分岐・ループ編~
条件分岐
処理の分岐にはIfステートメント、Select Caseステートメントの他に、三項演算子に当たるIf演算子・IIf関数があります。
IfステートメントとSelect Caseの使い分けですが、特定の値にて複数に分岐をする場合はSelect Caseを、複数の条件を交えて分岐する場合はIfを使用します。
Ifステートメント
If 条件1 Andalso 条件2 Orelse 条件3 Then
'*** 処理(条件1かつ2に当てはまるか条件3に当てはまる場合)
ElseIf 条件4 And 条件5 Or 条件6 Then
'*** 処理(条件4かつ5に当てはまるか条件6に当てはまる場合)
Else
'*** 処理(上記条件に当てはまらない場合)
End If
Select Caseステートメント
Select Case 調べる値
Case 値1
'*** 調べる値 = 値1の場合
Case 値2, 値3, 値4
'*** 調べる値が値2,値3,値4のいずれかの場合
Case 値5 To 値7
'*** 調べる値が値5~値7の場合
Case Is > 値8
'*** 調べる値が値8より大きい場合
Case 値9, 値10 To 値12, Is > 値13
'*** 組み合わせも可能
Case Else
'*** 上記のいずれにも当てはまらない場合
End Select
三項演算子(If演算子,IIf関数)
If(条件, Trueの時の値, Falseの時の値)
IIf(条件, Trueの時の値, Falseの時の値)
IfとIIfの違いはIfが条件に当てはまる方のみの値を処理するのに対し、IIfは両方処理される違いがある。
ループ
処理をループする方法として、Forステートメント、ForEachステートメント、Whileステートメント、Doステートメントがあります。
ループを途中で抜けたい場合はExitステートメントを使用することで現在のループを抜けることが出来ます。
また、For・ForEachステートメントはContinueステートメントを使用することで強制的に次のステップに進めることが出来ます。
Forステートメント
For カウンタ = 開始値 To 終了値 Step 増減値
'*** 処理
If 途中で抜ける条件 Then
'*** ループを抜ける
Exit For
End If
Next
'*** 逆順や跳び番でループする場合はStepを使用する
For i = 10 To 1 Step -1
'*** 処理(10から1まで繰り返す)
If 途中で抜ける条件 Then
'*** 次のステップに
Continue For
End If
Next
For Eachステートメント
For Each 要素 In コレクション
'*** 処理
Next
For Each num In {1, 2, 3, 4, 5}
'*** 処理(1,2,3,4,5を順に処理する)
Next
Whileステートメント
While 条件
'*** 条件を満たしている間ループ
If 途中で抜ける条件 Then
'*** ループを抜ける
Exit While
End If
End While
Do Loopステートメント
Do While 条件
'*** 条件を満たしている間ループ(Whileステートメントと同様)
If 途中で抜ける条件 Then
'*** ループを抜ける
Exit Do
End If
Loop
Do
'*** 条件を満たしている間ループ(Do Whileと違い一回は通る)
Loop While 条件
Do Until 条件
'*** 条件を満たすまでループ(Do Whileと逆の条件)
Loop
Do
'*** 条件を満たすまでループ(Do Untilと違い一回は通る)
Loop Until 条件
入れ子になったループからの脱出
先にふれたようにExitステートメントでループを抜けることが出来ますが、抜けられるのは一番内側のループになります。その為、ネストされたループも合わせて抜けたい場合そのままでは抜けることが出来ません。
ネストされたループから脱出する方法の例をあげますので参考にしてみてください。
'*** 例1:同じ条件やフラグを用いる
For i = 1 To 10
For j = 1 To 10
If 抜ける条件 Then
Exit For
End If
Next
If 抜ける条件1 Then
Exit For
End If
Next
'*** 例2:Gotoを使用
For i = 1 To 10
For j = 1 To 10
If 抜ける条件 Then
Goto ExitFor
End If
Next
Next
ExitFor:
'*** 例3:大外のループに別のループを用い、そのExitステートメントを使用
Dim i = 1
Do While i <= 10
For j = 1 To 10
If 抜ける条件 Then
Exit Do
End If
Next
i += 1
Loop
'*** 例4:ループ処理を関数化し、関数から抜ける
Sub LoopMethod()
For i = 1 To 10
For j = 1 To 10
If 抜ける条件 Then
Exit Sub
End If
Next
Next
End Sub
Discussion