「マクロ if not条件」
「エクセル マクロ not演算子」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが、時折みられます。
Excelマクロ・VBA(Visual Basic for Applications)で、Not条件を指定する方法・Not演算子の使い方を探している方による検索です。
さまざまなNot条件の指定方法
さまざまな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
上記のマクロを実行すると、アクティブセルの値を判定して、もしも「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条件を指定する