アプリ版:「スタンプのみでお礼する」機能のリリースについて

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と!は同じ意味ですか?

A 回答 (3件)

Like演算子のヘルプ(Likeの上でF1キーを押して表示する)に書いてあります。



-------
[!charlist] 文字リスト charlist に指定した文字以外の任意の 1 文字
-------

ご質問で書かれたそのパターンでいえば、確かにnot [a-z]*と同じ動作になりますね。
それでも例えばoption compare textみたいに宣言してて、違った動作になる場合もあります。こちらの動作についても同じヘルプに書いてあるので、確認してみて下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/02/13 20:03

結果的には同じ動作になっていますが、それは条件が一つだけだったからで、条件が複数ある場合に差が出ます。



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の場合はこの例でもありますが、カッコの付け忘れや付ける位置の間違いで結果が違って来るので、注意しないと自分でもよくわからんことになりがちです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/02/13 20:03

if obj is not nothing then


you can't use ! in this case.
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/02/13 20:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!