VBAを含むBASIC言語にはなくてはならないフロー制御ステートメントです。条件式の値に従って、複数のステートメント・ブロックのいずれかを実行させる、という機能があります。
下に示す2つの構文がありますが、お勧めは「ブロック形式構文」です。その理由は
- 読みやすい
- 変更しやすい
- より構造化された柔軟な記述ができる
などがあります。 |
| 単一行形式構文 |
次に単一行形式構文の例を示す。
| 例 |
If strText = "VBA" Then a = 0 Else a = 1 |
| 解説 |
strText の値が "VBA" だったら a に 0 を代入する。
strText の値が "VBA" でなかったら a に 1 を代入する。
|
《長所》
この構文は、短く簡単な条件判断を行うときに使用する。一行で書けるためスッキリと書くことが出来、プログラム全体の行数を少なくすることが出来る。
《短所》
一行で書いてしまうため、見にくくなる場合があり、デバッグの際に見落とす可能性が出てくる。 |
|
| ブロック形式構文 |
次に単一行形式構文の例を示す。
| 例 |
Private Sub CommandButton1_Click()
If Me.TextBox1.Value = 1 Then
MsgBox "1が入力されました"
ElseIf Me.TextBox1.Value = 2 Then
MsgBox "2が入力されました"
ElseIf Me.TextBox1.Value = 3 Then
MsgBox "3が入力されました"
End If
End Sub
|
| 解説 |
TextBox1 に入力された値によってメッセージボックスに表示する内容を変える。
TextBox1 に1が入力されていたら、"1が入力されました"
TextBox1 に2が入力されていたら、"2が入力されました"
TextBox1 に3が入力されていたら、"3が入力されました"
と表示する。 |
《長所》
この構文は、単一行形式の構文に比べ、より構造化された柔軟な記述ができる。
《短所》
複数行で書くため、プログラム全体の行数が増える。 |
|
| 「 Select Case ステートメント 」 との比較 |
上記ブロック形式構文の例を「Select Case ステートメント」で書いたものを次に示します。
Private Sub CommandButton1_Click()
Select Case Me.TextBox1.Value
Case 1
MsgBox "1が入力されました"
Case 2
MsgBox "2が入力されました"
Case 3
MsgBox "3が入力されました"
End Select
End Sub
|
1 つの条件式の値によって、複数の処理のいずれかを実行させるには、こちらのほうが構文的に見やすいので、お勧めする。
|