このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】If Notの意味を解説

2024年4月14日

【VBA】If Notの意味を解説

ネット記事でプログラムを見ているとIf Not〜というIf文に出会うことがあります。

このIf Notですが、If Notという構文があるわけではありません。

このIf文がどのような構造を取っているか詳しく紹介します。

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

If Notは「If Not 条件式 Then」を意味している

If文にNotが含まれている場合、「If Not 条件式 Then」と書かれているはずです。

If Notと読みたくなりますが、そうではなく「Not 条件式」と考えるのが正しいです。

Sub TestNot()
    'Not演算子のテストコード
    
    Dim bool As Boolean
    bool = False
    
    'Not演算子でboolが反転される(False⇒True)
    If Not bool Then
        MsgBox "Not boolはTrueです。"
    End If
End Sub

Not演算子はTrueとFalseを反転させる演算子です。

そのため「Not 条件式」とすると条件式がFalseのときは反転されてTrueになります。

If Notと書かれているIf文はこのように条件式を反転させるためにNot演算子を追加してあります。

Not演算子はどのような時に使うと良いか

ここまでNot演算子を使った例を紹介しましたが、Not演算子を使うのが必ずしも良いわけではありません。

コードが読みづらくなるのならばNot演算子の使用は避けた方が良いです。

Sub UseNot()
    'Not演算子の使用は避けた方が良い例
    
    Dim num As Long
    num = 9
    
    If Not num = 10 Then
        MsgBox "numは10ではありません"
    End If
End Sub

Sub NotUseNot()
    'Not演算子を使わないコード
    
    Dim num As Long
    num = 9
    
    'Not演算子でなく、<>を使用
    If num <> 10 Then
        MsgBox "numは10ではありません"
    End If
End Sub

このサンプルコードのように<>で済むのならばNot演算子は使わない方が可読性が良くなります。

Not演算子を使った方が良い例

Sub UseNotOK()
    'Not演算子を使った方が良い例
    
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    dic.Add "a", 1
    
    'Existsメソッドを使い、Not演算子で反転
    If Not dic.Exists("b") Then
        MsgBox "bはキーにありません"
    End If
End Sub

Not演算子を使うと良いのはブーリアン型を返すメソッドで、Falseのときに実行させたい場合です。

サンプルコードではExistsメソッドを使い、その返り値をNot演算子で反転させています。

このような場合はNot演算子のがスッキリとするのでおすすめです。
(Not演算子を避けると、条件式=Falseといった書き方になる)

VBAが難しいと感じたら
ココナラにてマクロ(VBA)の作成代行を始めました。
ご依頼はこちらから

VBA

Posted by やろまい