VBAでは、空の文字列ではなくvbNullString
に対して文字列などを比較すると、違いはありますか。 ""
?もしそうなら、両者にはどのような違いがありますか?vbNullStringと ""の間に違いはありますか?
答えて
vbNullString
および""
は異なる。ここには、メモリ使用の違いを説明するWebページがあります。すべての
「これは、文字列変数をクリアする通常の方法である。
Text$ = ""
もったいない!まず、文字列""
は、あなたがそれを使用するたびに、RAMの6つのバイトを取ります。考えてみましょう代替:?
Text$ = vbNullString
だから何これはvbNullString
はヌル文字列を表す特別なVBの定数である""
リテラルが空の世紀です。リング。重要な違いがあります。空文字列は実際の文字列です。ヌル文字列ではありません。それはちょうどゼロです。 C言語が分かっている場合、vbNullString
はNULLに相当します。
vbNullString
は、VBでは""
に相当します。実際の唯一の違いは、vbNullString
が割り当てと処理が高速で、メモリが少なくて済むことです。
VB以外の一部のAPIまたはコンポーネントを呼び出す場合は、アプリケーションを配布する前にvbNullString
で呼び出しをテストしてください。呼び出している関数がNULL文字列をチェックしていない可能性があります。その場合は、クラッシュする可能性があります。 VB以外の関数は、文字列パラメータを処理する前にNULLをチェックする必要があります。不運で、あなたが呼んでいる特定の機能はそれをしません。この場合、""
を使用してください。通常、APIがサポートvbNullString
を行うと、彼らもそれをよりよく行うことができます「
記事の残りの部分は、同様に洞察力のかもしれ文字列の最適化に関する追加情報を提供してい
をThis comparisonは変数に""
を割り当てると6バイトのメモリを使用し、vbNullString
を使用するとメモリは使用しないことを示しています。
個人的には、私は文字列の長さを評価することを好みます。 lengthが0の場合は、文字列がvbNullString
または""
であるという結論に達します。この方法は、vbNullString
を確認する最も簡単な方法として受け入れられています。
If Len(string) = 0 Then
あなたはLen
""
対vbNullString
対比較hereを読むことができます。
他の誰かが詳細な情報を求めている場合を除き、私はこれをマークしますしかし、あなたがリンクしている最後の記事は、著者には違いがあることを示しています。それが何であるかわからない。変数に代入されたときに使用されるメモリのような単純なものであってもかまいません。 – eirikdaude
'' ''は長さ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
- 1. "margin:0 auto;"の間に違いはありますか?と "margin:auto;"
- 2. Lisp: 'nilとnilの間に違いはありますか?
- 3. window.localStorageとlocalStorageの間に違いはありますか?
- 4. LayoutInflater.from(context)とcontext.getLayoutInflater()の間に違いはありますか?
- 5. f:ajaxとa4j:ajaxの間に違いはありますか?
- 6. Pythonでdir()とlocals()の間に違いはありますか?
- 7. -xとx * -1.0fの間に違いはありますか?
- 8. `def self.myMethod`と` def myMethod`の間に違いはありますか?
- 9. ラムダ関数で[=]と[&]の間に違いはありますか?
- 10. mallocとMarshal.AllocHGlobalとの間に違いがありますか?
- 11. ExecutorService.submitとExecutorService.executeの間に違いがありますか?
- 12. このコードにはメモリリークの間違いがありますか?
- 13. Office 2003と2007の間にVBAのバージョンに違いはありますか?
- 14. Endeca 5とEndeca 6の間にENEQueryオブジェクトに違いはありますか?
- 15. のsvnコピーとのsvn枝の間に違いはありますか?
- 16. if(!$ array)とif(empty($ array))の間に違いがあります
- 17. ジップ2と3つ以上のリストの間に違いはありますか?
- 18. 変数の宣言と宣言の間に違いはありますか?
- 19. innodbとXtraDBの間に顕著な違いはありますか?
- 20. Pythonで `if bool(x)`と `if x`の間に違いはありますか?
- 21. RubyとGroovyのブロック間に大きな違いはありますか?
- 22. <winsock.h>と<winsock2.h>の間に違いはありますか?
- 23. SeriesCollection.Add()とSeriesCollection.NewSeries()の間に微妙な違いはありますか?
- 24. CampingとSinatraの間に重要な違いはありますか?
- 25. R関数fitted()とpredict()の間に違いはありますか?
- 26. A aとの間に違いはありますか? A a = A()?
- 27. ソケット接続とtcp接続の間に違いはありますか?
- 28. `git merge origin master`と` git merge origin/master`の間に違いはありますか?
- 29. "2.00"と "2.00f"の間に機能的な違いはありますか?
- 30. このリクエストに間違いがありますか?
Rob Boveyさんのコメントを参照してください。http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj