135:マクロ素材 IF文(条件分岐)

100:エクセル

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)なのか?未来なのか?過去なのか?を判断して表示するようにしております。

YouTube

135 マクロ素材 If(条件分岐)

コメント

タイトルとURLをコピーしました