खोज…


वाक्य - विन्यास

  • पहचानकर्ता नाम [ तर्क ]
  • कॉल आइडेंटिफ़ायर नाम [ (तर्क) ]
  • [लेट | सेट] एक्सप्रेशन = पहचानकर्ता नाम (तर्क) ]
  • [Let | Set] IdentifierName [ (तर्कों) ] = अभिव्यक्ति

पैरामीटर

पैरामीटर जानकारी
IdentifierName कॉल करने की प्रक्रिया का नाम।
बहस प्रक्रिया को पारित करने के लिए तर्कों की एक अल्पविराम से अलग की गई सूची।

टिप्पणियों

पहले दो वाक्यविन्यास Sub प्रक्रियाओं को कॉल करने के लिए हैं; ध्यान दें पहले वाक्यविन्यास में कोई कोष्ठक शामिल नहीं है।

देखें यह भ्रामक है। हमेशा कोष्ठक का उपयोग क्यों न करें? पहले दो वाक्यविन्यासों के बीच अंतर की गहन व्याख्या के लिए।

तीसरा सिंटेक्स Function और Property Get प्रक्रियाओं को कॉल करने के लिए है; जब पैरामीटर होते हैं, तो कोष्ठक हमेशा अनिवार्य होते हैं। Let जब एक मान निर्दिष्ट कीवर्ड वैकल्पिक है, लेकिन Set जब एक संदर्भ बताए कीवर्ड आवश्यक है।

चौथा सिंटेक्स Property Let और Property Set प्रक्रियाओं को कॉल करने के लिए है; असाइनमेंट के दाईं ओर स्थित expression को प्रॉपर्टी के वैल्यू पैरामीटर में पास किया जाता है।

इम्प्लिमेंट कॉल सिंटैक्स

ProcedureName
ProcedureName argument1, argument2

किसी भी कोष्ठक के बिना उसके नाम से एक प्रक्रिया को बुलाओ।


किनारे का मामला

Call कीवर्ड केवल एक किनारे के मामले में आवश्यक है:

Call DoSomething : DoSomethingElse

DoSomething और DoSomethingElse प्रक्रियाएं कहलाती हैं। यदि Call कीवर्ड हटा दिया गया था, तो DoSomething को एक प्रक्रिया कॉल के बजाय लाइन लेबल के रूप में पार्स किया जाएगा, जो कोड को हटा देगा:

DoSomething: DoSomethingElse 'only DoSomethingElse will run

वापसी मान

एक प्रक्रिया कॉल के परिणाम को प्राप्त करने के लिए (जैसे Function या Property Get प्रक्रियाएँ Property Get करें), कॉल को एक असाइनमेंट के दाईं ओर रखें:

result = ProcedureName
result = ProcedureName(argument1, argument2)

यदि पैरामीटर हैं, तो कोष्ठक मौजूद होना चाहिए। यदि प्रक्रिया में कोई पैरामीटर नहीं है, तो कोष्ठक निरर्थक हैं।

यह भ्रामक है। हमेशा कोष्ठक का उपयोग क्यों न करें?

कोष्ठक का उपयोग फ़ंक्शन कॉल के तर्कों को संलग्न करने के लिए किया जाता है। उन्हें प्रक्रिया कॉल के लिए उपयोग करने से अप्रत्याशित समस्याएं हो सकती हैं।

क्योंकि वे बग का परिचय दे सकते हैं, रन-टाइम पर, प्रक्रिया के लिए संभवतः अनपेक्षित मान पास करके और संकलन-समय पर केवल अवैध सिंटैक्स द्वारा।

रन-टाइम

निरर्थक कोष्ठक बग का परिचय दे सकते हैं। एक प्रक्रिया है कि एक पैरामीटर के रूप में एक वस्तु संदर्भ लेता है दिया ...

Sub DoSomething(ByRef target As Range)
End Sub

... और कोष्ठक के साथ बुलाया:

DoSomething (Application.ActiveCell) 'raises an error at runtime

यह "ऑब्जेक्ट आवश्यक" रनटाइम त्रुटि # 424 बढ़ाएगा। अन्य परिस्थितियों में अन्य त्रुटियां संभव हैं: यहां Application.ActiveCell Range ऑब्जेक्ट संदर्भ का मूल्यांकन किया जा रहा है और मान द्वारा प्रक्रिया के हस्ताक्षर की परवाह किए बिना निर्दिष्ट किया गया है कि target ByRef पारित किया जाएगा। उपरोक्त स्निपेट में ByVal से DoSomething को दिया गया वास्तविक मान Application.ActiveCell.Value

कोष्ठक वीबीए को ब्रैकेटेड अभिव्यक्ति के मूल्य का मूल्यांकन करने के लिए मजबूर करते हैं, और परिणाम को ByVal कहा जाता है। जब मूल्यांकन किए गए परिणाम का प्रकार प्रक्रिया की अपेक्षित प्रकार को बेमेल कर देता है और इसे कथित रूप से परिवर्तित नहीं किया जा सकता है, तो एक रनटाइम त्रुटि उठाई जाती है।

संकलन समय

यह कोड संकलित करने में विफल रहेगा:

MsgBox ("Invalid Code!", vbCritical)

क्योंकि अभिव्यक्ति ("Invalid Code!", vbCritical) मूल्यांकन किसी मूल्य पर नहीं किया जा सकता है।

यह संकलन और कार्य करेगा:

MsgBox ("Invalid Code!"), (vbCritical)

लेकिन निश्चित रूप से मूर्खतापूर्ण लगेगा। निरर्थक कोष्ठक से बचें।

स्पष्ट कॉल सिंटैक्स

Call ProcedureName
Call ProcedureName(argument1, argument2)

स्पष्ट कॉल सिंटैक्स को तर्क सूची के चारों ओर Call कीवर्ड और कोष्ठक की आवश्यकता होती है; यदि पैरामीटर नहीं हैं, तो कोष्ठक निरर्थक हैं। जब अधिक आधुनिक अंतर्निहित कॉल सिंटैक्स VB में जोड़ा गया था, तो इस सिंटैक्स को अप्रचलित कर दिया गया था।

वैकल्पिक तर्क

कुछ प्रक्रियाओं में वैकल्पिक तर्क हैं। वैकल्पिक तर्क हमेशा आवश्यक तर्कों के बाद आते हैं, लेकिन प्रक्रिया को उनके बिना कहा जा सकता है।

उदाहरण के लिए, समारोह है, ProcedureName दो आवश्यक तर्कों (के लिए गए थे argument1 , argument2 ), और एक वैकल्पिक तर्क, optArgument3 , यह कम से कम चार तरीके कहा जा सकता है:

' Without optional argument
result = ProcedureName("A", "B")

' With optional argument
result = ProcedureName("A", "B", "C")

' Using named arguments (allows a different order)
result = ProcedureName(optArgument3:="C", argument1:="A", argument2:="B")

' Mixing named and unnamed arguments 
result = ProcedureName("A", "B", optArgument3:="C")

फ़ंक्शन हेडर की संरचना को यहां बुलाया जा रहा है, कुछ इस तरह दिखाई देगा:

Function ProcedureName(argument1 As String, argument2 As String, Optional optArgument3 As String) As String

Optional कीवर्ड इंगित करता है कि यह तर्क छोड़ा जा सकता है। जैसा कि पहले उल्लेख किया गया है - हेडर में पेश किए गए किसी भी वैकल्पिक तर्क को किसी भी आवश्यक तर्क के बाद, अंत में दिखाई देना चाहिए

आप इस मामले में तर्क के लिए एक डिफ़ॉल्ट मान प्रदान कर सकते हैं कि एक मान फ़ंक्शन में पारित नहीं किया गया है:

Function ProcedureName(argument1 As String, argument2 As String, Optional optArgument3 As String = "C") As String

इस फ़ंक्शन में, यदि c लिए तर्क की आपूर्ति नहीं की जाती है, तो यह मान "C" डिफ़ॉल्ट होगा। यदि कोई मान आपूर्ति की जाती है, तो यह डिफ़ॉल्ट मान को ओवरराइड करेगा।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow