もどる

 If...Then...Else ステートメント
HOMEへ
PRODUCTSへ
LEARNING
LINKへ
LOGO
HeadLine
ORDER FORMへ
Image画像
MailTo:

もどる


(c) Copyright 2005 VBAを基礎から解説 VBA World All rights reserved.
E-Mail:info@vba-world.com
 VBAを含むBASIC言語にはなくてはならないフロー制御ステートメントです。条件式の値に従って、複数のステートメント・ブロックのいずれかを実行させる、という機能があります。
 下に示す2つの構文がありますが、お勧めは「ブロック形式構文」です。その理由は
  1. 読みやすい
  2. 変更しやすい
  3. より構造化された柔軟な記述ができる
などがあります。
 単一行形式構文

 次に単一行形式構文の例を示す。

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 つの条件式の値によって、複数の処理のいずれかを実行させるには、こちらのほうが構文的に見やすいので、お勧めする。