2015-09-07 23 views
10

VBAでは、空の文字列ではなくvbNullStringに対して文字列などを比較すると、違いはありますか。 ""?もしそうなら、両者にはどのような違いがありますか?vbNullStringと ""の間に違いはありますか?

+0

Rob Boveyさんのコメントを参照してください。http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj

答えて

8

vbNullStringおよび""は異なる。ここには、メモリ使用の違いを説明するWebページがあります。すべての


「これは、文字列変数をクリアする通常の方法である。

Text$ = "" 

もったいない!まず、文字列""は、あなたがそれを使用するたびに、RAMの6つのバイトを取ります。考えてみましょう代替:?

Text$ = vbNullString 

だから何これはvbNullStringはヌル文字列を表す特別なVBの定数である""リテラルが空の世紀です。リング。重要な違いがあります。空文字列は実際の文字列です。ヌル文字列ではありません。それはちょうどゼロです。 C言語が分かっている場合、vbNullStringはNULLに相当します。

vbNullStringは、VBでは""に相当します。実際の唯一の違いは、vbNullStringが割り当てと処理が高速で、メモリが少なくて済むことです。

VB以外の一部のAPIまたはコンポーネントを呼び出す場合は、アプリケーションを配布する前にvbNullStringで呼び出しをテストしてください。呼び出している関数がNULL文字列をチェックしていない可能性があります。その場合は、クラッシュする可能性があります。 VB以外の関数は、文字列パラメータを処理する前にNULLをチェックする必要があります。不運で、あなたが呼んでいる特定の機能はそれをしません。この場合、""を使用してください。通常、APIがサポートvbNullStringを行うと、彼らもそれをよりよく行うことができます「


記事の残りの部分は、同様に洞察力のかもしれ文字列の最適化に関する追加情報を提供してい

全Webページ:!。http://www.aivosto.com/vbtips/stringopt.html

3

This comparisonは変数に""を割り当てると6バイトのメモリを使用し、vbNullStringを使用するとメモリは使用しないことを示しています。

個人的には、私は文字列の長さを評価することを好みます。 lengthが0の場合は、文字列がvbNullStringまたは""であるという結論に達します。この方法は、vbNullStringを確認する最も簡単な方法として受け入れられています。

If Len(string) = 0 Then 

あなたはLen""vbNullString対比較hereを読むことができます。

+0

他の誰かが詳細な情報を求めている場合を除き、私はこれをマークしますしかし、あなたがリンクしている最後の記事は、著者には違いがあることを示しています。それが何であるかわからない。変数に代入されたときに使用されるメモリのような単純なものであってもかまいません。 – eirikdaude

+1

'' ''は長さ0の既存の文字列であり、 'vbNullString'は' String'型のヌルポインタです(文字列を指しません)。 VBを比較する目的で(違いを隠す)(http://stackoverflow.com/questions/37035754/what-does-vb6-initialize-a-static-integer-to/37035879#comment61678413_37035879)、時には[それを隠す](http://stackoverflow.com/a/20909528/11683)。 – GSerg

関連する問題