在VBA中,將它做任何區別,如果我比較字符串,或類似的,針對vbNullString
而不是對一個空字符串; ""
?如果有的話,兩者之間有什麼不同?vbNullString和「」之間有什麼區別嗎?
回答
vbNullString
和""
是不同的。這是一個描述內存使用差異的網頁exerpt。
「這是清除一個字符串變量通常的方式。
Text$ = ""
真是浪費!首先,串""
需要在每次使用時間爲6個字節的RAM。考慮替代方案:?
Text$ = vbNullString
那麼,什麼是這個vbNullString
是一個特殊的VB常數,表示空字符串字面""
是一個空的ST環。有一個重要的區別。一個空字符串是一個真正的字符串。空字符串不是。這只是一個零。如果您知道C語言,則vbNullString
等於NULL。
在大多數情況下,vbNullString
相當於VB ""
。實際上唯一不同的是,vbNullString
更快分配和過程,它需要較少的內存。
如果您調用一些非VB API或組件,請在分發應用程序之前使用vbNullString
測試調用。你正在調用的函數可能不會檢查一個NULL字符串,在這種情況下它可能會崩潰。在處理字符串參數之前,非VB函數應檢查NULL。運氣不好,你打電話的特定功能不會這樣做。在這種情況下,請使用""
。通常的API都支持vbNullString
,他們甚至可以用它更好地執行「
本文的其餘部分,對優化字符串,可能是有見地的,以及其他信息
This comparison指出將""
分配給變量使用6個字節的內存,而使用vbNullString
將不使用任何內存。
就個人而言,我更喜歡來評估字符串的長度。如果長度爲0,那麼我們也得出的結論是該字符串是一個vbNullString
或""
。這種方法被接受爲檢查一個vbNullString
的最快的方法。
If Len(string) = 0 Then
您可以閱讀Len
VS vbNullString
VS ""
比較here。
看起來不錯,除非有其他人提供更多信息,我會標記此內容作爲解決方案,但是,您鏈接的最後一篇文章指出了作者的確存在差異不知道它是什麼。它當然可以像分配給變量時所佔用的內存那樣簡單,就像你在答案中早些時候指出的那樣。 – eirikdaude
有一個區別,''「'是一個零長度的現有字符串,'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. 「層」和「層」之間有什麼區別?
- 2. Tableau和QlikView之間有什麼區別
- 3. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 4. @Entity和@embeddable之間有什麼區別
- 5. ContentObservable和DataSetObservable之間有什麼區別?
- 6. touchmove和gesturechange之間有什麼區別?
- 7. :notification.flags和notification.defaults之間有什麼區別?
- 8. proc和lambda之間有什麼區別?
- 9. :: after和after之間有什麼區別?
- 10. read()和io.read()之間有什麼區別?
- 11. Request()和Request.Form()之間有什麼區別?
- 12. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 13. getA()和this.getA()之間有什麼區別?
- 14. (int)和intval()之間有什麼區別?
- 15. set_value和= pandas之間有什麼區別
- 16. * zoom和zoom之間有什麼區別?
- 17. {0}和「」之間有什麼區別?
- 18. typedef和using之間有什麼區別?
- 19. 「」和「'之間有什麼區別?
- 20. STDIN和tty之間有什麼區別?
- 21. +和%之間有什麼區別?
- 22. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 23. Lazy.Force()和Lazy.Value之間有什麼區別
- 24. -existingObjectWithID:error:和-objectWithID之間有什麼區別?
- 25. ReleaseFloatArrayElements和DeleteLocalRef之間有什麼區別
- 26. AutomationProperties.AutomationID和AutomationProperties.Name之間有什麼區別?
- 27. gets()和getc()之間有什麼區別?
- 28. _id:ObjectID和String之間有什麼區別?
- 29. @ResponseBody和HttpServletResponce之間有什麼區別
- 30. PlaceboTransaction和TopLevelTransaction之間有什麼區別
請參閱Rob Bovey的評論http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj