If ~ then ~ Else ~ End If の形式のIf文をご紹介いたします。もしも○なら△、そうでなければ、□という内容です。
構文
以下の形式で記載します。
If 条件 Then
条件に合う場合に実行する命令
Else
条件に合わない場合に実行する命令
End If
具体例
以下に具体例を記載して説明します。moduleにコピーして動かしてみてください。
Sub イフ文() MsgBox "A1が10より大きいか小さいか", vbInformation a = Cells(1, 1) If a < 10 Then MsgBox "A1は10より小さい= " & a Else MsgBox "A1は10より大きい= " & a End If End Sub
イフ文というマクロです。はじめにメッセージボックスで、”A1が10より大きいか小さいか”を表示します。これは、別に不要ですが、はじめて使うのに、A1に数字を入れることを、示しています。
a = cells(1, 1) とあるのは、A1の内容を変数 a に入れております。
(If)もしも、(a<10)aが10より小さいなら、Then 以下を実行しろという内容です。
Thenの次の行が、実行される内容です。この場合には、
MsgBox "A1は10より小さい= " & a
という、メッセージ A1は10より小さい= と表示して実際にA1に入っていた数字を記載(& a)
(Else)条件に合わない場合には、次の行を実行してください。という意味です。
MsgBox "A1は10より大きい= " & a
ということで、A1は10より大きいと表示され、A1に入っていた数字を記載(& a)します。
End If は、これでIF文は、ここまでという意味です。
※本題から外れますが、初めの行の
MsgBox "A1が10より大きいか小さいか", vbInformation
「 , vbInformation 」は、メッセージボックスの「アイコンを情報マーク」にしなさいという意味です。
If文の中にIf文
If文は、重ねて使うことができます。
たとえば、A1に文字列を入れておくと、初めの条件に合わないので、Elseの次の「A1は10より大きい」と表示されます。しかし、文字列は、10より大きいも小さいもないので、大きいはダメです。
Sub イフ2文() MsgBox "A1が10より大きいか小さいか", vbInformation a = Cells(1, 1) If a < 10 Then MsgBox "A1は10より小さい= " & a Else If IsNumeric(a) Then MsgBox "A1は10より大きい= " & a Else MsgBox "数字ではありません " & a End If End If End Sub
上記内容は、初めに10より小さければ、10より小さいと表示し、ちがえば、Else以下に行って、数字であるかどうか確認して、数字であるなら、それは、10より大きいと表示し、数字でなければ(IsNumeric)、「数字ではありません」と表示し、その内容の a をスペースを空けて表示するというものです。
応用編 過去か未来か
Sub 過去か未来か() MsgBox "A1に日付を入力してください。今日より過去か未来か判別します。", vbInformation a = Cells(1, 1) If IsDate(a) Then If a = Date Then MsgBox "A1は今日です。 " & a Else If a > Date Then MsgBox "A1は未来です= " & a Else If a < Date Then MsgBox "A1は過去です= " & a Else End If End If End If Else MsgBox "日付と判別できません " & a End If End Sub
上記は、まず、IsDateでaが日付かどうか判断して、後は、今日(Date)なのか?未来なのか?過去なのか?を判断して表示するようにしております。
コメント