- ベストアンサー
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と!は同じ意味ですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
結果的には同じ動作になっていますが、それは条件が一つだけだったからで、条件が複数ある場合に差が出ます。 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の場合はこの例でもありますが、カッコの付け忘れや付ける位置の間違いで結果が違って来るので、注意しないと自分でもよくわからんことになりがちです。
その他の回答 (2)
- coldblade
- ベストアンサー率20% (2/10)
if obj is not nothing then you can't use ! in this case.
お礼
ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
Like演算子のヘルプ(Likeの上でF1キーを押して表示する)に書いてあります。 ------- [!charlist] 文字リスト charlist に指定した文字以外の任意の 1 文字 ------- ご質問で書かれたそのパターンでいえば、確かにnot [a-z]*と同じ動作になりますね。 それでも例えばoption compare textみたいに宣言してて、違った動作になる場合もあります。こちらの動作についても同じヘルプに書いてあるので、確認してみて下さい。
お礼
ありがとうございました。
お礼
ありがとうございました。