• ベストアンサー

ifステートメント notと!は同じ意味ですか?

VBAのifステートメントで、notと!は同じ意味ですか? 「a」で始まらない。 と言う意味で、下記のコードを作ったのですが、どちらも思い通りの結果が得られます。 If "あabc" Like "[!a-z]*" Then Debug.Print "OK" End If If Not "あabc" Like "[a-z]*" Then Debug.Print "OK" End If End Sub ネットからのサンプルをコピペしたので、いまいち理解できてないのですが notと!は同じ意味ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • RandenSai
  • ベストアンサー率54% (305/561)
回答No.2

結果的には同じ動作になっていますが、それは条件が一つだけだったからで、条件が複数ある場合に差が出ます。 Like演算子の中の!はその文字以外という意味で、効力は自分に対してだけです。一方、Not演算子の場合は式の結果を反転させますが、カッコを使うと影響範囲を変えることが可能です。 If "12345" Like "!0" And "!6" Then Debug.Print "OK →結果はOKと表示 If Not ("12345" Like "0" And "6") Then Debug.Print "OK →結果はOKと表示 If Not "12345" Like "0" And "6" Then Debug.Print "OK →何も表示されない(If "12345" Like "!0" And "6" …と同じ意味になるから) なので、どっちで書いた方が解りやすいか?という観点で選ぶ感じですかね。ただNotの場合はこの例でもありますが、カッコの付け忘れや付ける位置の間違いで結果が違って来るので、注意しないと自分でもよくわからんことになりがちです。

HODKDUBUNJT
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • coldblade
  • ベストアンサー率20% (2/10)
回答No.3

if obj is not nothing then you can't use ! in this case.

HODKDUBUNJT
質問者

お礼

ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

Like演算子のヘルプ(Likeの上でF1キーを押して表示する)に書いてあります。 ------- [!charlist] 文字リスト charlist に指定した文字以外の任意の 1 文字 ------- ご質問で書かれたそのパターンでいえば、確かにnot [a-z]*と同じ動作になりますね。 それでも例えばoption compare textみたいに宣言してて、違った動作になる場合もあります。こちらの動作についても同じヘルプに書いてあるので、確認してみて下さい。

HODKDUBUNJT
質問者

お礼

ありがとうございました。

関連するQ&A