2009-09-08 11 views
5

सरल परिदृश्य: एक फ़ॉर्म और एक टेक्स्ट बॉक्स (अनबाउंड), Text1यह जांचने का सही तरीका है कि एक अनबाउंड नियंत्रण का मूल्य

If "" <> Text1 Then 
    MsgBox "Not Empty" 
End If 

उपरोक्त कोड काम करता है। अभिव्यक्ति ""<> Text1 सही होने पर मूल्यांकन करती है यदि टेक्स्ट बॉक्स में वर्ण होते हैं।

विपरीत काम नहीं करता है, पाठ बॉक्स की परवाह किए बिना खाली है या नहीं:

If "" = Text1 Then ' or alternatively, False = ("" <> Text1) 
    MsgBox "Empty!" 
End If 

आप इस मुद्दे को स्पष्ट कर सकते हैं?

+0

आप वास्तव में नियंत्रण आप देख रहे हैं की मूल निर्दिष्ट करना चाहिए जैसे कि, मेरे पाठ 1। यह अधिक पठनीय कोड बनाता है और संकलन त्रुटियों से बचाता है। –

उत्तर

5

टेक्स्टबॉक्स आमतौर पर शून्य होता है यदि इसमें कुछ भी शामिल नहीं होता है, यह शून्य लंबाई स्ट्रिंग ("") जैसा नहीं है। यह अक्सर उपयोग करने के लिए सबसे अच्छा हो सकता है:

If Trim(Text1 & "") = vbNullString 
    'Empty 

यह सही होगा यदि टेक्स्टबॉक्स में रिक्त स्थान, शून्य लंबाई स्ट्रिंग या शून्य है।

+0

@Remou, मुझे 'टेक्स्ट 1 और" "भाग पसंद है। यह शून्य मूल्यों के * असाइनमेंट * से बचने का एक शानदार तरीका है। धन्यवाद। –

+2

क्यों नहीं "मुझे! टेक्स्ट और vbNullString = vbNullString"? ट्रिम() एक नल टेक्स्टबॉक्स के बराबर एक या अधिक रिक्त स्थान वाले टेक्स्टबॉक्स को छोड़कर, कोई उद्देश्य नहीं देता है। जबकि एक अनबाउंड टेक्स्टबॉक्स में एकाधिक रिक्त स्थान नहीं हो सकते हैं, एक बाध्य टेक्स्टबॉक्स * उनमें * हो सकता है (हालांकि वे फ़ॉर्म नियंत्रण में एक संपादन से बच नहीं पाएंगे)। –

+0

मुझे लगता है कि vbNullString एक स्थिर लंबाई के लिए विशेष रूप से अच्छा नाम नहीं है जो शून्य लंबाई स्ट्रिंग है, इसलिए मैंने सोचा कि दोनों रूप इसे स्पष्ट बना देंगे। – Fionnuala

4

वैकल्पिक रूप से, मेरे पास एक छोटा सा कार्य है जो मुझे विभिन्न प्रकार के प्रकारों से निपटने के दौरान उस तरह की चीज़ों की जांच के लिए उपयोगी लगता है और मैं सिर्फ यह जानना चाहता हूं कि यह खाली है।

'-----------------------------------------------------------------------------' 
' True if the argument is Nothing, Null, Empty, Missing or an empty string. ' 
'-----------------------------------------------------------------------------' 
Public Function IsBlank(arg As Variant) As Boolean 
    Select Case VarType(arg) 
     Case vbEmpty 
      IsBlank = True 
     Case vbNull 
      IsBlank = True 
     Case vbString 
      IsBlank = (arg = vbNullString) 
     Case vbObject 
      IsBlank = (arg Is Nothing) 
     Case Else 
      IsBlank = IsMissing(arg) 
     End Select 
End Function 

आज भी Made a blog post इसके बारे में भी।

+0

आपका दिनचर्या आसान हो जाएगा। बहुत अच्छा जवाब, धन्यवाद। –

1

मैं हमेशा उन चीजों की जांच के लिए function Nz (variable, valueIfNull) का उपयोग करता हूं। उदाहरण के लिए:

if (Len(Nz(Me.txt1, "")) > 0) then 
     'Me.txt1 does not contain a value 
end if 

या मैं एक recordset करने के लिए एक पाठ बॉक्स के मूल्य को बचाने के लिए चाहते हैं:,

rst!Name = Nz(Me.txtName, "No name given") 
+0

धन्यवाद मार्कस। मैं उस समारोह को नहीं जानता था। –

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

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