Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » VBAのIf文でNot条件を指定する

VBAのIf文でNot条件を指定する

対象:Excel2003, Excel2007, Excel2010, Excel2013

「マクロ if not条件」
「エクセル マクロ not演算子」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが、時折みられます。

Excelマクロ・VBA(Visual Basic for Applications)で、Not条件を指定する方法・Not演算子の使い方を探している方による検索です。

[スポンサードリンク]

さまざまなNot条件の指定方法

さまざまなNot条件の指定方法が考えられますが、サンプルマクロを動かしてみるほうが、理解しやすいと思います。

Sub さまざまなNot条件の指定方法()
 Dim val As Variant
 Dim msg As String

 val = ActiveCell.Value
 msg = "Not演算子による例" & vbCrLf
 msg = msg & "アクティブセルは"
 If Not val = 100 Then
  msg = msg & "100ではありません。"
 Else
  msg = msg & "100です。"
 End If
 MsgBox msg

 msg = "比較演算子<>による例" & vbCrLf
 msg = msg & "アクティブセルは"
 If val <> 100 Then
  msg = msg & "100ではありません。"
 Else
  msg = msg & "100です。"
 End If
 MsgBox msg

 msg = "If文のElseによる例" & vbCrLf
 msg = msg & "アクティブセルは"
 If val = 100 Then
  msg = msg & "100です。"
 Else
  msg = msg & "100ではありません。"
 End If
 MsgBox msg

End Sub

上記のマクロを実行すると、アクティブセルの値を判定して、もしも「100」だった場合には、
「アクティブセルは100です。」
そうでなければ
「アクティブセルは100ではありません。」
といったメッセージが、3回表示されます。

Not演算子によるNot条件

1回目のメッセージを表示するのは、
 msg = "Not演算子による例" & vbCrLf
 msg = msg & "アクティブセルは"
 If Not val = 100 Then
  msg = msg & "100ではありません。"
 Else
  msg = msg & "100です。"
 End If
 MsgBox msg
の部分です。

条件分岐文・If文の
 If Not val = 100 Then
でNot演算子を使っています。

valが100に等しいという条件「val = 100」を、Not演算子で否定することでNot条件を指定しています。

比較演算子によるNot条件

「100でない」という条件であれば、そのまま比較演算子・<> を使って書くことも可能です。

それが、
 msg = "比較演算子<>による例" & vbCrLf
 msg = msg & "アクティブセルは"
 If val <> 100 Then
  msg = msg & "100ではありません。"
 Else
  msg = msg & "100です。"
 End If
 MsgBox msg
の部分です。

条件分岐文・If文の
 If val <> 100 Then
で比較演算子の、<>(ノットイコール)を使ってNot条件を指定しています。

If文のElseによるNot条件

If文のElseが、Not条件になっているケースもあるでしょう。

それが、
 msg = "If文のElseによる例" & vbCrLf
 msg = msg & "アクティブセルは"
 If val = 100 Then
  msg = msg & "100です。"
 Else
  msg = msg & "100ではありません。"
 End If
 MsgBox msg
の部分です。

条件分岐文・If文、
 If val = 100 Then
の、
 Else
を採ることで、Not条件になっています。

どれを使うのかはケースバイケース

この3つのどれを使うのかは、ケースバイケースです。

コードを書くときと読むときに、誤解の少ない書き方をするのがいいでしょう。

ちなみに私は、Not演算子を使うのは、最後の手段と考えています。

上記のようなシンプルな例であれば、比較演算子のノットイコールを使うのが、誤解が少なくていいと感じます。

他に何か条件があるような場合には、Elseを使うほうがいいケースもあるでしょう。

条件が複雑な場合、Not演算子を使わないと条件を指定し辛いようなとき、Not演算子を使うほうが誤解されにくいようなケースでは、Not演算子を使います。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 条件分岐 » VBAのIf文でNot条件を指定する

「条件分岐」の記事一覧

検索


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

.