2009-11-02 9 views
43

वैकल्पिक तर्क प्रदान किए जाने पर या नहीं, तो मैं कैसे परीक्षण करूं? - VB6 में/VBAवीबी - यदि वैकल्पिक तर्क प्रदान किए जाते हैं या नहीं तो मैं परीक्षण कैसे करूं?

Function func (Optional ByRef arg As Variant = Nothing) 

    If arg Is Nothing Then <----- run-time error 424 "object required" 
     MsgBox "NOT SENT" 
    End If 

End Function 

उत्तर

59

उपयोग IsMissing:

If IsMissing(arg) Then 
    MsgBox "Parameter arg not passed" 
End If 

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

+16

भी मुझे लगता है कि अगर धुंध को एक संस्करण के रूप में घोषित किया गया है तो यह केवल काम करता है –

+3

@ जोन: सच है, क्योंकि 'वारिनेंट' संरचना 'आईआईआरसी,' VT_EMPTY') में ध्वज के संदर्भ में 'IsMissing' लागू किया गया है)। मैंने इसका उल्लेख नहीं किया क्योंकि ओपी के सवाल पहले से ही 'संस्करण' का इस्तेमाल करते हैं। –

4

तो IsMissing (आर्ग) फिर ...

9

आप IsMissing() फ़ंक्शन का उपयोग कर सकते हैं। लेकिन यह केवल वैरिएंट डेटाटाइप के साथ काम करता है।

2

यदि आप एक स्ट्रिंग या संख्या चर का उपयोग कर रहे हैं तो आप चर के मान को देख सकते हैं। उदाहरण के लिए:

Function func (Optional Str as String, Optional Num as Integer) 

If Str = "" Then 
    MsgBox "NOT SENT" 
End If 

If Num = 0 Then 
    MsgBox "NOT SENT" 
End If 

End Function 

यह आपको गैर-संस्करण चर का उपयोग करने की अनुमति देता है। ,

Function func (Optional ByRef arg As Variant = Nothing) 
    If nz (arg, 0) = 0 Then 
     MsgBox "NOT SENT" 
    End If 
End Function 

यह भी अन्य डेटा प्रकार के साथ इस्तेमाल किया जा सकता बस ध्यान रखें: मैं न्यूजीलैंड समारोह का प्रयोग करेंगे एक संस्करण के साथ

function func(optional vNum as integer:=&HFFFF) '&HFFFF value that is NEVER set on vNum 

If vNum = &HFFFF Then 
    MsgBox "NOT SENT" 
End If 

End Function 
+0

यह पूरी तरह से वैध उपयोग में अंतर नहीं कर सकता है: 'func (" ", 0) 'गलत तरीके से अनसेट पैरामीटर को ध्वजांकित करेगा। सामान्य रूप से 'वेरिएंट' का उपयोग किए बिना इस भेद को पाने के लिए * कोई रास्ता नहीं है *। –

+0

@ कोनराड रुडॉल्फ यह एक बहुत अच्छा मुद्दा है। आप यह सुनिश्चित करना चाहते हैं कि आपने कभी भी किसी स्थिति में इसका उपयोग नहीं किया था, तो आप एक खाली स्ट्रिंग या शून्य की संख्या भेज सकते थे। – OSUZorba

2

आप की तरह कुछ का उपयोग कर सकते कि ज़ीरो न तो नल और न ही शून्य-लंबाई के रूप में गिना जाता है, इसलिए nz(0,"") अभी भी 0

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

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