方法 : 1 つ以上の条件に基づいて、ステートメントを実行する
更新 : 2007 年 11 月
If...Then...Else ステートメント (Visual Basic) を使うと、条件の ブール型 (Boolean) (Visual Basic) 値に基づいて特定のステートメントまたはステートメント ブロックを実行できます。条件は、通常、2 つの値の比較によって判断されますが、Boolean 値 (True または False) として評価できる式の場合どのような式でも指定できます。指定できる値には、数値型などのその他のデータ型を Boolean に変換した値も含まれます。
条件が True である場合に、1 つ以上のステートメントを実行する
実行するステートメントが 1 つだけある場合、If...Then...Else 構造の単一行の構文を使用します。Else または End If ステートメントは必要ありません。次に例を示します。
Sub fixDate() Dim myDate As Date = #2/13/1973# If myDate < Now Then myDate = Now End Sub
または
条件が True の場合に実行するコードが複数行にわたる場合は、End If ステートメントを含む複数行の構文を使用します。条件が False のときに実行するコードがない場合、Else ステートメントを省略します。次に例を示します。
Dim alertLabel As New System.Windows.Forms.Label Sub alertUser(ByVal value As Long) If value = 0 Then alertLabel.ForeColor = System.Drawing.Color.Red alertLabel.Font = New Font(alertLabel.Font, _ FontStyle.Bold Or FontStyle.Italic) End If End Sub
条件が True である場合にいくつかのステートメントを実行し、False の場合に他を実行する
Else (Visual Basic) ステートメントと共に If...Then...Else 構造を使用して、ステートメントの 2 つのブロックを定義します。条件が True である場合に、あるブロックが Visual Basic によって実行され、False である場合に、他のブロックが実行されます。次に例を示します。
Dim alertLabel As New System.Windows.Forms.Label Sub alertUser(ByVal value As Long) If value = 0 Then alertLabel.ForeColor = System.Drawing.Color.Red alertLabel.Font = New Font(alertLabel.Font, _ FontStyle.Bold Or FontStyle.Italic) Else alertLabel.Forecolor = System.Drawing.Color.Black alertLabel.Font = New Font(alertLabel.Font, _ FontStyle.Regular) End If End Sub
最初の条件が False である場合に、追加の条件をテストする
1 つ以上の ElseIf (Visual Basic) ステートメントと共に If...Then...Else 構造を使用して、最初の条件が False である場合に、追加の条件をテストします。次の例では、Function プロシージャは、業績評価に基づいて従業員のボーナスを計算します。If ステートメントおよび ElseIf ステートメントの条件が、すべて False である場合だけ、Else ステートメントの後で、ステートメント ブロックが実行されます。
Function bonus(ByVal performance As Integer, ByVal salary As Decimal) _ As Decimal If performance = 1 Then Return salary * 0.1 ElseIf performance = 2 Then Return salary * 0.09 ElseIf performance = 3 Then Return salary * 0.07 Else Return 0 End If End Function
If...Then...Else ステートメントに表示される順序で、Visual Basic によって条件がテストされます。True 条件または Else ステートメントがあると、対応するステートメント ブロックが実行されます。その後、End If ステートメントの後のステートメントに、コントロールが渡されます。
ElseIf ステートメントは、必要に応じていくつでも追加できます。また、省略することもできます。Else ステートメントは、ElseIf ステートメントがあるかどうかに関係なく、含めることも省略することもできます。