2016-04-28 24 views
0

VBのこのステートメントはオブジェクトの存在をチェックしますか、内容がヌルかどうかを確認しますか?私は内容がヌルであることをチェックしていると思っていますが、私はダブルチェックしたいと思います。前もって感謝します。「そうでない場合」とそれが何を確認するか

+0

わかりやすいように、括弧を使うことをお勧めします。もし 'If Not(___は何もありません)'。いくつかの文脈では、これは操作の順序の問題を防止するであろう(しかし、ここではそうではないが、私は認めている)。いくつかの文脈を提供して、どのような '____ 'が' ____'なのかを知っておくことをお勧めします。 – Smandoli

答えて

1

VBAでの "null"の概念(NullReferenceException -null、C#、またはNullPointerException、Javaの場合)はキーワードNothingでカバーされています。これはVB.NET(およびそれ以前)、ならびにVB.NETに当てはまります。

Dim foo As Object 
Debug.Print foo.Bar ' boom, the dreaded runtime error 91 shows up 

したがって、Nothingの解釈は正しいです。

JavaまたはC#とは異なり、VBAで比較演算子(C#/ Javaでは==、VBAでは=)を使用することはできません。その代わりに(SQLと似た方法で)

If foo Is Nothing Then ' if (foo == null) { } 

または負の形式::Nothingを否定することはできませんので、この製剤は、無効であることを

If Not foo Is Nothing Then ' if (foo != null) { } 

注:

あなたは Isキーワードを使用します
If foo Is Not Nothing Then ' incorrect formulation, if (foo == !null) { } 

物事はあなたがVBAがIsNull機能を持っていることを認識したときに泥と混乱するかもしれない....し、その後もIsEmptyNullvbNullEmptyvbEmpty値を対応する - が、これらは、あなたの質問の範囲外でありますMSDNとスタックオーバーフローで簡単に見つかります。

関連する問題