2012-12-13 13 views
6

तो मुझे एक निराशाजनक सरल समस्या है जिसे मैं हल नहीं कर सकता।ऑब्जेक्ट की तुलना करना। वैल्यू = नल अपेक्षित परिणाम नहीं उत्पन्न करता है

If Me.Bank_Credit.Value = Null Then 
Me.Bank_Credit.Value = 0 
End If 

असल में, मेरे पास एक अनबाउंड बॉक्स है जिसमें उपयोगकर्ता डेटा दर्ज करता है और फिर बटन दबाता है। पुष्टिकरण बॉक्स पर एक हां के बाद, अनबाउंड बॉक्स पर डेटा को बाउंड बॉक्स पर कॉपी किया गया है। हालांकि, यदि उपयोगकर्ता कुछ भी दर्ज नहीं करता है, तो बदले में एक खाली बाउंड फ़ील्ड बनाता है जो सड़क के नीचे प्रश्नों को गंभीरता से खराब कर सकता है।

कहा जा रहा है कि उपर्युक्त कोड बस मेरे लिए काम नहीं करेगा। अगर मैं सेट करता हूं, उदाहरण के लिए, यदि Me.Bank_Credit.Value = 1 और फिर इसे चलाएं, तो 1s 2s में बदल जाएगा, जैसा होना चाहिए। लेकिन यह बस नल या यहां तक ​​कि "" के लिए काम करने से इंकार कर देता है।

मुझे यकीन है कि इस मुद्दे का एक आसान समाधान है, मैं इसे समझ नहीं सकता।

धन्यवाद अग्रिम में

उत्तर

16

कुछ भी कभी अशक्त, नहीं भी एक और अशक्त के बराबर है। और कुछ भी शून्य के बराबर नहीं है, यहां तक ​​कि एक और नल भी नहीं।

जब Bank_Credit अशक्त है, निम्नलिखित अभिव्यक्ति अशक्त वापस आ जाएगी ... True नहीं के रूप में आप उम्मीद कर सकते, या यहाँ तक False

Debug.Print Null = Null 
Null 

उपयोग IsNull() समारोह:

Debug.Print (Me.Bank_Credit.Value = Null) 

यह तत्काल विंडो में इस परिणाम के लिए एक ही कारण नहीं है।

If IsNull(Me.Bank_Credit.Value) Then 

इसके अलावा, देखने के लिए यह उपयोगी हो सकता है कि क्या Nz() मदद विषय को देखो। आप यह कर सकते हैं, हालांकि यह वास्तव में IsNull() पर सुधार नहीं है। लेकिन Nz() अन्य वीबीए कोड के लिए बहुत सुविधाजनक हो सकता है।

Me.Bank_Credit = Nz(Me.Bank_Credit, 0) 
+4

जब नल्स की बात आती है, '=' को तुलनित्र के रूप में उपयोग नहीं किया जा सकता है (यदि x = null तब) लेकिन अभी भी असाइनमेंट निर्देश (x = Null) के रूप में उपयोग किया जा सकता है। –

+0

आह, यह काम किया! बहुत सराहना की। – user1706975

4

HansUp के जवाब सही है, लेकिन मैं इसे जोड़ने के लिए प्रासंगिक "कुछ भी नहीं" जो मूल रूप से एक dereferenced वस्तु के लिए एक VBA कीवर्ड है के लिए एक समान निर्माण नहीं है कि सोचा था। आप की तरह

If myRange is Nothing Then 

बयानों का उपयोग करने के लिए आप (अन्य भाषाओं है कि यह करने के लिए एक कीवर्ड समान में वास्तव में और) सभी VBA मदद फ़ाइलों के ऊपर बयान के इन प्रकार देखेंगे है।

संबंधित मुद्दे