Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » Excel VBAのIf文でElseの場合に何もしない

Excel VBAのIf文でElseの場合に何もしない

対象:Excel2007, Excel2010, Excel2013

「vba if else使わない」
「マクロ if else なにも表示しない」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

VBA(Visual Basic for Applications)の条件分岐文・If文で、Elseのときに何もしないようにするには、コードをどう書けばいいのかを探している方による検索です。

[スポンサードリンク]

ElseありのIf文

まずは、ElseのあるIf文を確認しましょう。

Sub If文_Elseあり()

 If Range("A1").Value >= 80 Then
  MsgBox "合格"
 Else
  MsgBox "不合格"
 End If

End Sub

上記のマクロを実行すると、アクティブシートのA1セルの値が80以上のときに「合格」、そうでなければ「不合格」というメッセージが表示されます。

ElseなしのIf文

で、本題のElseのときに何もしないIf文です。

Sub If文_Elseなし()

 If Range("A1").Value >= 80 Then
  MsgBox "合格"
 End If

End Sub

上記のマクロを実行すると、アクティブシートのA1セルの値が80以上のときにだけ「合格」というメッセージが表示されます。80未満のときには何も行われません。

先の、Elseのあるマクロから、
 Else
  MsgBox "不合格"
を、削除しただけです。これでElseのときに何もしない状態になります。

Elseなしの1行のIf文

このElseのないIf文は、1行で書くこともできます。

Sub If文_Elseなしを1行で()

 If Range("A1").Value >= 80 Then MsgBox "合格"

End Sub

先のElseなしの条件分岐文から
 End If
を削除して、条件の書かれている、
 If Range("A1").Value >= 80 Then
と、実行内容の書かれている、
  MsgBox "合格"
を同じ行に書いた状態です。

Elseなしの場合のありがちなミス

Elseなしの条件分岐文の、
 If Range("A1").Value >= 80 Then
  MsgBox "合格"
 End If
と、1行で書いた、
 If Range("A1").Value >= 80 Then MsgBox "合格"
の区別が明確になっていない方が、以下のようなミスをしてしまう傾向があるように感じています。

End Ifを付ける必要のない1行のElseなしIf文で不要な「End If」をつけて、
 If Range("A1").Value >= 80 Then MsgBox "合格" End If
と書いてしまったり、逆に、複数行で書いているのに必要な、
 End If
を書き忘れてしまったり、といったミスです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » Excel VBAのIf文でElseの場合に何もしない

「条件分岐」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.